【问题标题】:Bash script pass find files to awk [Mac]Bash 脚本将查找文件传递给 awk [Mac]
【发布时间】:2015-10-07 21:54:00
【问题描述】:

我在一个目录中有一些压缩后的日志文件,它们看起来像这样:

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 $4 }' > output.json

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

【问题讨论】:

    标签: bash awk zcat


    【解决方案1】:

    你可以使用xargs:

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

    【讨论】:

    • 感谢您的回答,但每个文件我都收到此错误:zcat: can't stat: logs/day_1_time_log_1.log.gz (logs/day_1_time_log_1.log.gz.Z): No such file or directory
    • 我将 zcat 更改为 gzcat 并解决了问题。你能更新你的答案吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多