web-dev-qa-db-ja.com

sed / awkを使用して、一致するパターンOR別の一致するパターンを持つ行を印刷する

パターンに一致するファイルの行を印刷する必要があります[〜#〜]または[〜#〜]を使用して別のパターンawk または sed 。これは簡単な作業だと思いますが、答えが見つからないようです。何か案は?

20
rick

POSIXの方法

awk '/pattern1/ || /pattern2/{print}'

編集

公平を期すために、私はlhfの方が/pattern1|pattern2/これは、同じ結果を得るために必要な入力が少ないためです。ただし、このテンプレートは論理AND操作には使用できないことを指摘する必要があります。そのため、/pattern1/ && /pattern2/

27
SiegeX

使用する:

sed -nr '/patt1|patt2/p'

ここで、patt1およびpatt2はパターンです。行全体と一致させたい場合は、次を使用します。

sed -nr '/^(patt1|patt2)$/p'

-rをドロップして、エスケープを追加できます。

sed -n '/^\(patt1\|patt2\)$/p'

pOSIX準拠のため。

22

awk '/PATT1|PATT2/ { print }'

6
lhf

なぜgrepを使いたくないのですか?

grep -e 'pattern1' -e 'pattern2'
6
Vijay