GNU/Linux >> Linux の 問題 >  >> Linux

複数のパターンでGrepを実行する方法は?

暗黙のANDでマルチパターンを一致させたい パターン間、つまり、複数のグループを順番に実行するのと同じです:

grep pattern1 | grep pattern2 | ...

では、どのように変換するのですか?

grep pattern1 & pattern2 & pattern3

引数を動的に作成しているため、単一のgrepを使用したいので、すべてを1つの文字列に収める必要があります。フィルタの使用はシステム機能であり、grepではないため、それを主張するものではありません。

この質問を次の質問と混同しないでください:

grep "pattern1|pattern2|..."

これはまたはです マルチパターンマッチ。

承認された回答:

agrep この構文でそれを行うことができます:

agrep 'pattern1;pattern2'

GNU grepを使用 、PCREサポートを使用してビルドすると、次のことができます。

grep -P '^(?=.*pattern1)(?=.*pattern2)'

ast grepを使用 :

grep -X '.*pattern1.*&.*pattern2.*'

.*を追加 s as <x>&<y> 両方の<x>に一致する文字列に一致します および<y> 正確にa&b できるような文字列がないため、一致することはありません。 両方のa およびb 同時に)。

パターンが重ならない場合は、次のこともできる可能性があります。

grep -e 'pattern1.*pattern2' -e 'pattern2.*pattern1'

ポータブルな方法としては、おそらくawkを使用するのが最適です。 すでに述べたように:

awk '/pattern1/ && /pattern2/'

sedを使用 :

sed -e '/pattern1/!d' -e '/pattern2/!d'

これらはすべて、正規表現の構文が異なることに注意してください。


Linux
  1. カラー出力をgrepする方法

  2. 複数の Tor プロセスを異なる終了 IP で一度に実行する方法は?

  3. ヘッダーを使用して ps 出力を grep する方法

  1. 大文字と小文字を区別しないパターンをLと一致させる方法は?

  2. ファイル内の複数の文字列を見つける方法は??

  3. UbuntuでNginxを使用して複数のPHPバージョンを実行する方法は?

  1. 複数の文字列、パターン、または単語をgrepする方法

  2. PodmanでSystemdサービスとしてコンテナを実行する方法

  3. パターンとファイルの grep ペア