sed
を使用して角かっこで文字列を切りたい。
[
で文字列を削除したい場合、エラーを回避する方法は?例えば:
$ echo '[Om/mystring' | grep -oP '(?<=[Om\\)\w+'
grep: missing terminating ] for character class
エラー文字クラスの終了の欠落がすでに述べているように、ここでの問題は[
に関係しているため、エスケープする必要があります。それ以外の場合は、grepによって文字クラスとして理解されます。
また、入力に応じて//
の代わりに/
を使用する一方で、\
を言っています。
まとめて、これは[Om/
の後に一連の単語を出力します。
$ echo '[Om/mystring' | \grep -oP '(?<=\[Om\/)\w+'
mystring
[
は正規表現構文の特殊文字であり、 文字クラス が導入されているため、エラーが発生しています。文字列リテラルとして処理するには、エスケープする必要があります。つまり、\[
[Om/
プレフィックスをremoveだけにしたい場合は、パターンに表示されない区切り文字を使用するとより簡単になります。
$ echo '[Om/mystring' | sed 's;\[Om/;;'
mystring