如何使用“(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

我可能可以将一些东西拼凑在一起,比如一堆grepandgrep -v调用,但想知道我是否缺少一些更简洁的方法来做到这一点?

答案1

对于像这样更复杂的过滤器,awk可能可以完成这项工作:

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

相关内容