Bash 脚本将查找文件传递给 awk [Mac]

Bash script pass find files to awk [Mac]

我的目录中有一些 gzip 日志文件,它们看起来像这样:

log/day_1_time_log_1.log.gz
...
log/day_1_time_log_100.log.gz
log/day_1_location_log_1.log.gz
...
log/day_1_location_log_100.log.gz

我想从所有包含字符串 time 的日志中取出第 4 列(一些 json 字符串)并将它们放入一个文件中。这就是我所做的,我收到 zcat: unknown compression format 错误。

find logs/* -name *time* | zcat | awk -F"\t" '{ print  }' > output.json

我的代码有什么问题?我可以将其直接传递给 awk 吗?

您可以使用 xargs:

find logs/ -name '*time*.log.gz' -print0 | 
    xargs -0 -I % gzcat % | awk -F'\t' '{print }' > output.json