「(me OR you) OR (john AND ! doe)」などのクエリを使用して bash でスクリプト出力をフィルタリングするにはどうすればよいですか?

「(me OR you) OR (john AND ! doe)」などのクエリを使用して bash でスクリプト出力をフィルタリングするにはどうすればよいですか?

コマンドライン出力をbashスクリプトまたはブール検索に基づいてフィルタリングするいくつかのコマンドラインプログラムにパイプすることができます。正規表現は必要ありません(しかし、サポートされていれば大丈夫でしょう)。

たとえば、次のようなファイルがあるとします。

ファイル1.txt

hello there
me and you are going to the store
this is a file created by john doe and his friend jane
john is here

その後、私の仮想スクリプトを次のように実行できます。

$ cat file1.txt | filter "(me OR you) OR (john AND ! doe)"
me and you are going to the store
john is here

おそらく複数の呼び出しのようなものを一緒にまとめることができますが、grepこれをgrep -v行うためのよりきれいな方法がないかどうか疑問に思いますか?

ベストアンサー1

このように、より複雑なフィルタの場合は、次のことをawk行うことが可能です。

awk '( /me|you/ ) || (/john/ && ! /doe/ )' /path/to/file

おすすめ記事