grepは、特定の単語を持たないすべての行を検索します。

grepは、特定の単語を持たないすべての行を検索します。

fileA.txt ファイルがあります。

Batman.plist
Green Arrow.plist
Hawkgirl.plist
EOPrototypes.plist
Person.plist
EOPrototypes.plist
EOJavellinPrototypes.plist
Sinestro
Slomon Grundy.plist
Batman Beyond.plist
EORedRobin
EORavenPrototypes.plist

plistで終わり、単語を含まないすべての行を取得するにはPrototype。これまで私

grep -v "Prototype" fileA.txt | grep -E "*plist$"

出力は次のとおりです

Batman.plist
Green Arrow.plist
Hawkgirl.plist
Person.plist
Slomon Grundy.plist
Batman Beyond.plist

私が欲しいのがこれです。

しかし、もっと良い方法がありますか?

ベストアンサー1

grep -v Prototype | grep 'plist$'

おそらくまだ最高です。sedまたは とともに 1 つのコマンドを使用してこの操作を実行できます (または他の人がすでに示したように非awk標準拡張を使用 )。grep

sed '/Prototype/d;/plist$/!d'

または

awk '/plist$/ && ! /Prototype/'

しかし、これは必ずしもより効率的ではありません。

おすすめ記事