我正在尝试制作一个脚本来 grepping 位于 /var/log/ 中的日志文件。我可以 grep 未压缩的日志或压缩的日志(由于日志轮换),但无法在一个命令中同时执行这两种操作(当我尝试这样做时,我得到“二进制文件(标准输入)匹配”),甚至有可能做这样的事情吗?谢谢!
问问题
4177 次
3 回答
10
zgrep
可以为你做,它处理压缩和未压缩的文件。一个缺点是它不能递归地处理目录。但是对于您的实例,它是完全足够的,您可以过滤例如系统日志,如下所示:
$ zgrep PATTERN /var/log/syslog*
于 2015-05-19T09:47:16.560 回答
6
尝试使用shell函数执行此操作:
greplog () {
cd /var/log
{
cat $1 $1.*[0-9]
zcat $1.*.gz
} | grep "$2"
}
用法 :
$ greplog syslog pattern
于 2013-02-18T18:17:38.070 回答
3
xzgrep
是常用压缩文件的一站式商店,至少在 Ubuntu 16 和 macOS 10.12 上(使用MacPorts中的 xz 安装)。从手册页:
xzgrep invokes grep(1) on files which may be either uncompressed or compressed with xz(1), lzma(1), gzip(1), or bzip2(1)
。
用法(注意 -r 不受支持):
$ find . -type f | parallel -j4 'xzgrep -Hn "PATTERN" {}'
于 2017-02-13T21:02:10.617 回答