%20OR%20(john%20AND%20!%20doe)%E3%80%8D%E3%81%AA%E3%81%A9%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20bash%20%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E5%87%BA%E5%8A%9B%E3%82%92%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
コマンドライン出力を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