Pet*_*owe 5 linux grep awk sed
我正在使用这样的命令来查找其中包含“term”一词的文件:
grep -l term *
Run Code Online (Sandbox Code Playgroud)
但我现在希望能够找到其中包含两个不同单词的文件(我们称它们为 termA 和 termB)——不一定在同一行。我想找到包含两个术语的文件,而不仅仅是具有任一术语的文件。
现在我可以为此编写一个繁琐的 bash 脚本,但是 grep、egrep、awk、sed 或其他任何东西都有可以帮助我的工具吗?
提前致谢。
在这种情况下,您可以grep单独使用:
grep -Plz "termA.*termB|termB.*termA" *
Run Code Online (Sandbox Code Playgroud)
怎么运行的:
Perl兼容正则表达式 termA.*termB并termB.*termA搜索其中包含这两个术语的字符串。
组合的 PCREtermA.*termB|termB.*termA匹配包含这两个术语的所有字符串。
最后,-z开关使数据行以空字节而不是换行符结束。
顺便说一下,没有必要使用-P. 如果您更愿意继续使用POSIX 基本正则表达式,语法类似:
grep -lz "termA.*termB\|termB.*termA" *
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您需要辅助工具:
(grep -l termA * ; grep -l termB *) | sort | uniq -d
Run Code Online (Sandbox Code Playgroud)
怎么运行的:
grep -l termA * ; grep -l termB *显示包含任一术语的所有文件。包含这两个术语的文件将显示两次。
sort对输出进行排序。
uniq -d仅显示重复行(需要排序的行)。
| 归档时间: |
|
| 查看次数: |
1083 次 |
| 最近记录: |