Ben*_*ack 9 linux unix bash grep
我需要在我们的邮件日志中搜索特定的电子邮件地址。我们将一个名为maillog的当前文件以及一周的 .bz2 文件保存在同一文件夹中。目前,我正在运行以下命令来搜索文件:
grep person@domain.com maillog
bzgrep person@domain.com *.bz2
Run Code Online (Sandbox Code Playgroud)
有没有办法将grep和bzgrep命令组合成一个输出?这样,我可以将合并的结果通过管道传输到单个电子邮件或单个文件。
gee*_*aur 24
另一种方式是
{ grep ...; bzgrep ...;} >file
Run Code Online (Sandbox Code Playgroud)
&&有一个困难,bzgrep如果grep失败就不会运行。
请注意最后一个命令后的左花括号和分号后的强制性空格。或者,您可以使用 subshell 语法(括号而不是花括号),它不是那么挑剔:
(grep ...; bzgrep ...) >file
Run Code Online (Sandbox Code Playgroud)
Phi*_*ack 11
如果文件不是 bzip 压缩的,bzgrep 会自动默认为常规 grep。因此,以下内容就足够了:
bzgrep person@domain.com maillog *bz2 | mail -s "logs yay" someuser@blah
Run Code Online (Sandbox Code Playgroud)
哦,当然这也是我的强制性GNU Parallel解决方案:
parallel -m bzgrep person@domain.com ::: maillog* *bz2 | mail -s "logs yay" someuser@blah
Run Code Online (Sandbox Code Playgroud)
如果您正在检查大量文件,这可能会快很多。
| 归档时间: |
|
| 查看次数: |
5448 次 |
| 最近记录: |