grepは、スペースで囲まれた他の一致に含まれていない正確な単語のみを一致します。

grepは、スペースで囲まれた他の一致に含まれていない正確な単語のみを一致します。

「正確に一致」という文字列が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'\'一重引用符で囲まれた文字列を使用し、両側の文字通りの一重引用符を「エスケープ」することもできますが、個人的には少し見苦しいと思います。

おすすめ記事