次の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
。