sedにすべての特殊文字を無視するように依頼

sedにすべての特殊文字を無視するように依頼

行を削除するには、次のコードを使用します。

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\$

おすすめ記事