各行に文字列があります。たとえば、次のようになります。
" … “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個以上発生
- 。ほぼすべてと一致
- \エスケープ文字(この場合は)です。