次のうち、grepを使用する正規表現で正しく使用されるアンカーは何ですか?

次のうち、grepを使用する正規表現で正しく使用されるアンカーは何ですか?

次の2つのコマンドは同じ出力を提供しますが、それを使用する正しい方法は何ですか?

grep ^'\<that\>' file.txt

この単語が最初の単語として含まれる行を検索する

grep '^\<that\>' file.txt

前の出力と同じです。

^ アンカーを引用符の前または引用符の中に置くことの違いは何ですか?どちらが適していますか?

ベストアンサー1

コマンド間に違いはありません。彼らはすべて同じことを行います:

$ set -x  ## turn on debugging info

$ /bin/grep ^'\<that\>' file.txt
+ /bin/grep '^\<that\>' file.txt

$ /bin/grep '^\<that\>' file.txt
+ /bin/grep '^\<that\>' file.txt

上記のように、両方のバージョンはまったく同じタスクを実行します。

つまり、通常、正規表現全体を引用符で囲むことは常に安全です。

/bin/grep '^\<that\>' file.txt

この場合、あまり違いはありませんが、正規表現にシェルに重要な文字が含まれていると、大きな違いが発生する可能性があります。たとえば、

grep ;'foo' file

ここで、シェルは;制御文字を解釈し(grep引数なし)と'foo' file

おすすめ記事