[英]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.