Grep:なぜエスケープ修飾子を使用するのですか?

Grep:なぜエスケープ修飾子を使用するのですか?

修飾子の意味は次のとおりです。

-\{m\} exactly m repetitions of previous character
- \{m,\} at least m repetitions of previous character
- \{m,n\} any number of repetitions of prev char between m and n inclusive
- \< beginning of word
- \> end of word

それらを避ける理由は何ですか?

たとえば、file1に「cat」という単語が含まれている場合:

$ egrep -n '\<cat\>' file1
17:cat

上記のコマンドは「cat」という単語を見つけましたが、以下のコマンドはどうですか?何も返しませんが、実際に何をしていますか?

$ egrep -n '<cat>' file1

答え1

初期バージョンは、、、、、およびメタ文字を認識しgrepなかったため、互いに一致しました。唯一のメタ文字は、、、、およびです。この動作は、以前のバージョンとの互換性のために維持されます(以前のスクリプトを書き換える必要なく、そのまま動作できます)。したがって、最近開発されたメタ文字の特別な属性を有効にするにはを使用する必要があり、改行文字とタブを意味するand notなどの改行文字とタブを取得するにはandを使用する必要があります。{…}?+(…)<>[…]^$.*\\ntnt\n\t

関連情報