gpt4 book ai didi

linux - 从 unix 中的 .gz 日志文件中提取值

转载 作者:可可西里 更新时间:2023-11-01 11:43:31 24 4
gpt4 key购买 nike

我正在尝试从本质上是压缩日志文件的一堆 .gz 日志文件中提取特定值(例如本例中的 userAgent)。这些日志文件中每条日志语句的格式如下所示:

2013-06-20;02:00:02.503 [664492205@qtp-446095113-8883]-Activity [response@12293 appId=testApp userAgent=BundleDeviceFamily/iPhone,iPad (iPad; iPad2,5; iPad2,5; iPhone OS 6.1.3) EXEC_TM=123  FLOW=response TOKN_TM=0 GW_TM=2314.529 http.status=200 id=029dde45-802c-462a-902b-138bc5490fba offeringId=iPad httpUrl= test.com AUD_TM=0 ipAddress=10.10.10.10 ]\

2013-06-20;02:00:02.504 [664492205@qtp-446095113-8883]-Activity [response@12293 appId=testApp userAgent=FNetwork/609.1.4 Darwin/13.0.0 id=029dde45-802c-462a-902b-138bc5490fba EXEC_TM=123 FLOW=response TOKN_TM=0 GW_TM=2314.529 http.status=200 offeringId=iPad httpUrl= test.com AUD_TM=0 ipAddress=10.10.10.10 ]

在这种情况下,我想提取 userAgent 字段并以下列格式之一显示结果:

userAgent=BundleDeviceFamily/iPhone,iPad (iPad; iPad2,5; iPad2,5; iPhone OS 6.1.3)
userAgent=FNetwork/609.1.4 Darwin/13.0.0

等等..

或者只打印值,例如:

BundleDeviceFamily/iPhone,iPad (iPad; iPad2,5; iPad2,5; iPhone OS 6.1.3)
FNetwork/609.1.4 Darwin/13.0.0

编辑:只是为了添加更多信息,这些空格分隔的字段(例如 key1=value1 key2=value2)可以以任何顺序出现

感谢帮助。谢谢!

最佳答案

使用 + :

zcat input.gz | sed -n 's/.*\(userAgent=[^=]*\) [^ =][^ =]*=.*/\1/p'

也可以更短一些- :

zcat input.gz | sed -n 's/.*\(userAgent=[^=]*\) [^ =]\+=.*/\1/p'

还有一些 , 组合:

zcat input.gz | grep -o 'userAgent=[^=]*' | sed 's/ [^ ]*$//'

可以组合成 (感谢 lhf):

zgrep -o 'userAgent=[^=]*' input.gz | sed 's/ [^ ]*$//'

关于linux - 从 unix 中的 .gz 日志文件中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17713248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com