私は次のようなgrepを持っています:
grep "/abc/[A-Z]" file1.txt | cut -d/ f3 | sort -u
grepは結果を完全に返します。
ALPHA
abc
BRAVO
CHARLIE
しかし、なぜ出力がabc
含まれていますか?区切り文字バックスラッシュの後に大文字の単語のみを使用するように正規表現を設定しました。これが予想される結果ですか?abc
出力からどのように削除する必要がありますか?
答え1
に使用する正規表現を固定していませんgrep
。その結果、ラインのどこでも一致することができます。
たとえば、1行は次のようになります。
blah/blah/abc/Abc
または
/blah/abc/Abc
は式と一致し、両方とも文字列をabc
3番目の区切り/
フィールドとして含みます。
式を行の先頭に固定するには、次のようにします。
^/abc/[A-Z]
abc
または、他の方法でより厳しい一致を強制するか、スタイルとアプリケーションに最適な方法を使用して最終結果をクリーンアップします。grep -v -F -x abc