「grep」を使用してテキスト ファイル内のパターンの組み合わせを検索する方法は何ですか?
たとえば、「by the way」と、「way by the」や「the way by」などの他の可能な組み合わせを探しているとします。
ありがとう。
「grep」を使用してテキスト ファイル内のパターンの組み合わせを検索する方法は何ですか?
たとえば、「by the way」と、「way by the」や「the way by」などの他の可能な組み合わせを探しているとします。
ありがとう。
このためのツールは awk であり、grep ではありません。1 行で:
awk '/by/ && /the/ && /way/' file
ファイル全体:
gawk -v RS='\0' '/by/ && /the/ && /way/' file
これは 3 つの単語を検索していることに注意してください。これらの 3 つの単語の間にスペースを入れた組み合わせを検索しているわけではありません。それはあなたが望むものですか?
さらにヘルプが必要な場合は、サンプル入力や期待される出力などの詳細を提供してください。
最も簡単な方法は、おそらく正規表現を使用することです。しかし、これも少し間違っています。
egrep '([ ]*(by|the|way)\>){3}'
これが行うことは、3 つの単語のグループで一致することです。単語の前にスペースがあれば (存在する場合)、完全な単語になるように強制し (したがって\>
末尾に があります)、次のいずれかの場合は文字列を一致させます。グループ内の単語は 3 回出現します。
実行例:
$ echo -e "the the the\nby the\nby the way\nby the may\nthe way by\nby the thermo\nbypass the thermo" | egrep '([ ]*(by|the|way)\>){3}'
the the the
by the way
the way by
すでに述べたように、これは「偽」陽性を引き起こしますが、それを受け入れるthe the the
ことができる場合は、この方法で行うことをお勧めします.