行を削除するには、次のコードを使用します。
sed -i "0,/$DELETE_THIS/{/$DELETE_THIS/d;}" file.txt
ただし、変数になどの特殊文字が含まれていると、このDELETE_THIS
コードは失敗します。.
/
*
sed
すべての特殊文字を無視してデフォルトのテキストとして使用するように指示する方法はありますか?
ベストアンサー1
文字列があり、
$DELETE_THIS
文字通り処理する方法でsed
その文字列を渡そうとします。sed
これを行うには、意味のあるすべての文字ペアを引用する必要があります
sed
。バックスラッシュを前に付けます。たとえば、Bash構文を使用すると、次のようになります。
DELETE_THIS="$(<<< "$DELETE_THIS" sed -e 's`[][\\/.*^$]`\\&`g')"
^ab[c-d]\ef$
たとえば、これは\^ab\[c-d\]\\ef\$
。