bash
sed
またはを使用して変数を拡張したいと思います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
変数を拡張しません。
どうすればいいですか?
ベストアンサー1
そしてzsh
:
array1=(
string1
string2
string3
)
sed -i -e/$^array1/d file
の正規表現に一致するすべての行が削除されます$array1
。
または、次のようにすることができます(Bourneに似たシェル)。
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)