簡體   English   中英

兩個bash數組中的模式匹配

[英]pattern matching within two bash arrays

我發現了很多關於此的帖子,但無法拼湊起來解決我的問題。 所以說我有兩個數組:

array1=( adir bdir anicedir )
array2=( adir anice )

我想有這樣的第三個數組

array3=( adir anicedir )

更具體地說,如果array2中第i個元素的前5個字符與array1中任何元素的前5個字符相匹配,則將array2[i]替換為array1[i]

沒有什么特別簡短的內容,因為bash不是一種數據處理語言。 您需要使用循環。

array1=( adir bdir anicedir )
array2=( adir anice )
array3=()

for val2 in "${array2[@]}"; do
    for val1 in "${array1[@]}"; do
        if [[ ${val1:0:5} == "${val2:0:5}" ]]; then
            array3+=("$val1")
            break
        fi
    done
done

引用==的右側可確保執行文字字符串比較而不是模式匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM