grep は、パターンを満たす文字列に対して逆方向マッチングを実行します。

grep は、パターンを満たす文字列に対して逆方向マッチングを実行します。

各行に文字列があります。たとえば、次のようになります。

" … “es” completed."
" … “en” completed."
" … “fr” completed."

私はこれらすべての駅の一致を見つけようとしています。つまり、パターンに一致するすべての行を出力しないでください。

echo " … “es” completed." | grep -v " … “(*)” completed."
echo " … “es” completed." | grep -v " … “[*]” completed."
echo " … “en” completed." | grep -v " … “[\w]” completed."
echo " … “fr” completed." | grep -v " … “[\W]” completed."

grepのこれらすべての方法は依然として文字列を出力します。オプションパラメータとして-eを使用する必要があるかどうかはわかりませんが、目的の結果は得られません。

答え1

-e PATTERN, --regexp=PATTERN PATTERN をパターンとして使用します。複数の検索パターンを指定したり、ハイフン(-)で始まるパターンを保護したりできます。 (-e は POSIX で指定されます.)

はい、-eを使用する必要があります。ただし、正規表現、特に二重引用符内の二重引用符、ドット、およびアスタリスクもあります。

次に終わる行は望まないとしましょう。十分。

| grep -v -e '.*completed\.$'

  • $文字列または行の終わり
  • * 0個以上発生
  • 。ほぼすべてと一致
  • \エスケープ文字(この場合は)です。

関連情報