我可以使用相同的命令grep压缩文件和未压缩文件

时间:2013-02-18 18:04:13

标签: logging grep debian

我正在尝试创建一个用于grepping / var / log /中的日志文件的脚本。我能够grep未压缩的日志或压缩的日志(作为日志轮换的结果)但是无法在一个命令中执行这两个操作(当我尝试这样做时,我得到“二进制文件(标准输入)匹配”),甚至可以做这样的事情吗?谢谢!

3 个答案:

答案 0 :(得分:8)

zgrep可以为您完成,它可以处理压缩文件和未压缩文件。一个缺点是它不能递归地处理目录。但对于您的实例,它已足够,您可以过滤,例如syslog如下:

$ zgrep PATTERN /var/log/syslog*

答案 1 :(得分:6)

尝试使用函数执行此操作:

greplog () {
    cd /var/log
    {
        cat $1 $1.*[0-9]
        zcat $1.*.gz
    } | grep "$2"
}

用法:

$ greplog syslog pattern

答案 2 :(得分:1)

xzgrep是常用压缩文件的一站式商店,至少在Ubuntu 16和macOS 10.12上安装(从 MacPorts 安装xz)。从man页面: 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" {}'