【问题标题】:Linux: zgrep multiple strings in one line from a tar.gz fileLinux:从 tar.gz 文件的一行中 zgrep 多个字符串
【发布时间】:2020-06-07 17:09:43
【问题描述】:

我有一个包含数千条信息的 tar.gz 文件(名为 logs.tar.gz),如下所示:

2020-06-07 09:02:14.983 {"action":"request","categoryName":"INN","url":"/inn/entryCategory/fetch","loginName":"+441234123456","token":"abcxyz","body":{"approvalType":""}}

我想从上面的日志示例中 zgrep 以下三段字符串:

2020-06-07 09:02:14.983  
/inn/entryCategory/fetch  
+441234123456  


1- 我想以这种格式获取完整的日期,
2- 想要获取 URL
3-最后想要获取登录名,在我的例子中是电话号码。

我成功地一一提取结果。但是,我想一次完成所有三个字符串的 zgrep。 (仅获取包含所有三个字符串的结果)
我正在使用的命令是:

zgrep -a "/inn/entryCategory/fetch" logs.tar.gz  

如果我想从一行中 zgrep 三个以上的字符串,命令是什么。

如果有人愿意帮忙,将非常感谢。

【问题讨论】:

    标签: linux zgrep


    【解决方案1】:

    如果我理解正确,那么您可以将.* 放在您要匹配的每条文本之间,然后您将得到所有三个都存在的行。

    例如

    zgrep "2020-06-07 09:02:14.983.*/inn/entryCategory/fetch.*+441234123456 
    

    这是你的意思吗?

    【讨论】:

    • 对不起,忽略我的回答,我想你只是想要匹配的文字吧?
    • 如果是这种情况,这个问题可能会有所帮助unix.stackexchange.com/q/13466
    • 感谢您的即时回复,我犯了两个错误,错误 1:我在命令中使用了单引号,如下所示:zgrep " '2020-06-07 09:02:14.983' .* ' /inn/entryCategory/fetch' .* '+441234123456' " MISTAKE2: 我没有遵守命令,例如我使用的这个命令根本不起作用,只是因为字符串的顺序错误:zgrep "2020 -06-07 09:02:14.983.*+441234123456.*/inn/entryCategory/fetch" 非常感谢您的帮助。竖起大拇指。
    • 我无法在 cmets 中插入新行(换行符),有人也可以帮助我吗? :)
    • 啊,太棒了,你得到了你想要的结果吗?太好了,干得好:-)
    猜你喜欢
    • 2017-02-07
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多