Logging 我可以使用同一命令对压缩文件和未压缩文件进行grep吗

Logging 我可以使用同一命令对压缩文件和未压缩文件进行grep吗,logging,grep,debian,shell,Logging,Grep,Debian,Shell,我正在尝试创建一个脚本,用于对位于/var/log/中的日志文件进行灰显。我可以grep未压缩日志或压缩日志(由于日志旋转),但无法在一个命令中同时执行这两项操作(当我尝试执行此操作时,我获得“二进制文件(标准输入)匹配”),是否可以执行此操作?谢谢 尝试使用以下函数执行此操作: greplog () { cd /var/log { cat $1 $1.*[0-9] zcat $1.*.gz } | grep "$2" } 用法: $ g

我正在尝试创建一个脚本,用于对位于/var/log/中的日志文件进行灰显。我可以grep未压缩日志或压缩日志(由于日志旋转),但无法在一个命令中同时执行这两项操作(当我尝试执行此操作时,我获得“二进制文件(标准输入)匹配”),是否可以执行此操作?谢谢

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

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

$ greplog syslog pattern

zgrep
可以为您做这件事,它可以处理压缩和未压缩的文件。一个缺点是它不能递归地处理目录。但就您的实例而言,这已经足够了,您可以按如下方式过滤系统日志:

$ zgrep PATTERN /var/log/syslog*

xzgrep
是常用压缩文件的一站式服务,至少在Ubuntu 16和macOS 10.12上是如此(xz从MacPorts安装)。从页面:
xzgrep对文件调用grep(1),这些文件可以是未压缩的,也可以是使用xz(1)、lzma(1)、gzip(1)或bzip2(1)压缩的。

用法(注意-r不受支持):


$find-输入f | parallel-j4'xzgrep-Hn“PATTERN”{}

@StevenPenny.gz,因此例如syslog、syslog.1、syslog.2.gz、syslog.3.gz等等都与grep等人一致,使用
greplog模式syslog
不是更好吗?