「正確に一致」という文字列が2回現れるファイルがあります。
this is an 'exact match'
this is 'another exact match' line
これにより、grep -w 'exact match' file.txt
両方のケースが発生します。
最初のアイテム(正確に一致)だけを受け取りたいです。
私も次のことを試しました。
grep -e '\bexact match\b' file.txt
grep -e '\<exact match\>' file.txt
しかし、どちらも望ましくない2つの状況を作り出します。
grepを使ってこれを行う正しい方法は何ですか?
答え1
一重引用符を一致させるには、パターンに次のものを含めます。
$ grep -F "'exact match'" file
this is an 'exact match'
一重引用符で囲まれた文字列には一重引用符を含めることはできないため、パターンの周りに二重引用符を使用しています。クエリ文字列が二重引用符で囲まれているため、文字列内のすべてのシェル変数またはコマンド置換が拡張されます。
他の方法:
$ grep -F "'"'exact match'"'" file
this is an 'exact match'
これは一重引用符の周囲に二重引用符のみを使用し、文字列には一重引用符を使用しますexact match
。文字列などのシェル変数いいえ拡大されます。
\''exact match'\'
一重引用符で囲まれた文字列を使用し、両側の文字通りの一重引用符を「エスケープ」することもできますが、個人的には少し見苦しいと思います。
答え2
結果の最初の同時実行のみを抽出するには、以下で十分です。
grep -m1 'exact match' file.txt
-中同時実行数を指定し、1最初の項目だけが表示されることを意味します。