bash変数に格納されている文字列を置き換えるには、sedを呼び出します。

bash変数に格納されている文字列を置き換えるには、sedを呼び出します。

bashsedまたはを使用して変数を拡張したいと思います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)

おすすめ記事