【问题标题】:using Zgrep and awk to parse a .tgz file and print first row使用 Zgrep 和 awk 解析 .tgz 文件并打印第一行
【发布时间】:2021-05-25 11:41:33
【问题描述】:

我想使用 Zgrep 和 Awk 来打印特定的行。

我使用下面的脚本。但是,我无法打印特定的行要求。

zcat SYS.20210519.tgz | awk '/11055/ && /2.5.5.5/'

如果有人能帮忙就好了。谢谢。

文件名:SYS.20210519.tgz

文件输入:

20210519 072532  11055  ERROR   Connection is not writable, error[grpId[2.5.5.5/49.3.14.13:17126] connId[142706130] testMode[true] connInfo[ConnInfo[connId=142706130, connGrp=2.5.5.5/49.3.14.13:17126,

文件输出(需要):

20210519 072532  11055  ERROR   Connection is not writable, error[grpId[2.5.5.5/49.3.14.13:17126] 

【问题讨论】:

  • 欢迎来到 SO,感谢您分享您的努力,请在您的问题中更清楚地添加您的输入示例和预期输出以使其清楚。
  • 感谢您的回复。我现在用输入文件和预期的输出文件编辑了我的问题。谢谢
  • 我再次编辑了我的问题。谢谢
  • 您的脚本以何种方式失败?它打印您想要的行(可能还有其他一些您不想要的行,但如果这是您要问的问题,那就别想了)。

标签: awk grep zgrep


【解决方案1】:

对于您显示的示例,您能否尝试以下操作。使用zcat 读取您的 Input_file,然后将其输出作为标准输入发送到awk 程序。在哪里使用match 函数匹配正则表达式,它将打印直到错误值[grpId 直到出现]

zcat Input_file | 
awk 'match($0,/.*error\[grpId\[[^]]*\]/){print substr($0,RSTART,RLENGTH)}'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2022-06-10
    • 2023-02-04
    • 2017-04-23
    • 1970-01-01
    • 2022-01-13
    • 2014-04-12
    相关资源
    最近更新 更多