grepコマンドで複数のANDの組み合わせを実行しようとしていますが、次の2つのモードを使用して実行できます。
grep -E 'pattern1.*pattern2' filename
上記の方法では、3〜4つのパターンを使用できますか?
答え1
パターンの順序が固定されている場合は、grep
次のように簡単に使用できます。
grep -E 'pattern1.*pattern2.*pattern3'
ただし、すべてのパターンが存在しなければならず、任意の順序で表示できる場合、たとえば2つのパターンの場合、組み合わせは複雑になります。
grep -E '(pattern1.*pattern2|pattern2.*pattern1)'
(3つのモードにはすでに8つの組み合わせがあります)。
この場合(つまり、を使用する場合)、パターンごとに1つのインスタンスを持つパイプラインで呼び出しをカスケードで配置することをお勧めしgrep
ます。grep
grep pattern1 <infile | grep pattern2 | grep pattern3
各インスタンスはそのパターンに一致する行のみをフィルタリングし、結果全体にはすべてのパターンを持つ行のみが含まれます。
最も明確な解決策を得るためのより良い方法は、次のものを使用することですawk
。
awk '/pattern1/ && /pattern2/ && /pattern3/'
このような表現では順序は重要ではありません。
答え2
はい。必要な正規表現を設定して、コマンドでパターンとして使用できますgrep
。有効な正規表現でなければなりません。