3

config/*Linux カーネル ソースには、自分のボードに似たファイルを見つけたいと思うファイルがたくさんあります。

だから私は試します:

egrep -l -e key1 -e key2 config/*

Sample config/file1:
    This is key1
    This is key2
Sample config/file2:
    This is key1
Sample config/file3:
    This is key2

しかし、結果はどちらかkey1またはkey2ファイルのリストです。を含む結果が欲しいのですが、結果を 生成できる他の簡単な UNIX シェルはありますかkey1 ? key2

前のサンプルでは、​​'file1' をリストしたいだけでした。

4

2 に答える 2

2

私のおすすめ:

( grep -l key1 config/* ; grep -l key2 config/* ) |sort |uniq -c |grep '^ *2\>' |awk '{print $2}'

最初grepに を含むすべてのファイルを出力しkey1、2 番目に を含むすべてのファイルを出力し、次にを出力し、3 番目に2 回リストされたファイル(つまり、両方のキーを含む) をフィルターします。grepkey2sortuniqgrep

于 2015-05-03T10:56:07.820 に答える
0

'grep -E 'pat1.*pat2|pat2.*pat1'' はいつもの呪文です。公理の解決策は、これらのパターンが指定された順序で表示される場合にのみ機能します。正規表現演算子を使用すると、検索で任意の順序でパターンを見つけることができます。

于 2012-11-30T10:12:54.900 に答える