2つの正規表現を含むファイルから行を印刷する方法(その1つは別の正規表現の部分文字列)

2つの正規表現を含むファイルから行を印刷する方法(その1つは別の正規表現の部分文字列)

ファイルに以下がある場合 -

apple,orange,banana
orange
ora,orange,apple
apple,ora
orange,apple,ora,banana

以下を含む行だけを印刷したいと思いますoraorange

ora,orange,apple
orange,apple,ora,banana

答え1

シングルエグレフ:

egrep 'ora\b.*orange|orange.*ora\b' file

出力:

ora,orange,apple
orange,apple,ora,banana

またはシングルsed表現する:

sed -n '/orange/{/ora\b/p}' file
ora,orange,apple
orange,apple,ora,banana

どちらの方法も\b(単語の境界)が使用されます。

答え2

完全な単語を取得するにはGrepを使用してください。

$ grep -w orange foo.csv | grep -w ora
ora,orange,apple
orange,apple,ora,banana

-wこれは、一致するテキストが単語ではなく文字(単語の文字は文字、数字、および下線付き)で囲まれなければならないことを意味します。

関連情報