Bash
呼叫 sed 替換儲存在 bash 變數中的字元串
我想
bash
用sed
or擴展一個變數awk
。這個變數是一個數組。例如,腳本必須刪除數組中包含的字元串。我試過
ARRAY1=( string1 string2 string3 ) sed -i '/${ARRAY1[@]}/d' /etc/file
和
ARRAY1=( string1 string2 string3 ) for i in ${ARRAY1[@]} ;do sed -i '/$i/d' /etc/file;done
但沒有一個有效,
sed
不擴展變數。我怎樣才能做到這一點?
找到解決方案,使用
""
而不是''
.
與
zsh
:array1=( string1 string2 string3 ) sed -i -e/$^array1/d file
將刪除與
$array1
.或者你可以這樣做(任何類似 Bourne 的 shell):
regexps='string1 string2 string3' grep -ve "$regexps" file
或者,要搜尋字元串,請添加
-F
:grep -F -v -e$^array1 # (zsh)
或者:
strings='string1 string2 string3' grep -F -ve "$strings" # (any shell)