我正在尝试使用shell或python脚本解析日志文件。我用awk和sed,但没有运气。有人可以帮我解决这个问题吗?下面是输入和期望的输出。
customer1:123
SRE:1
clientID:1
Error=1
customer1:124
SRE:1
clientID:1
Error=2
customer1:125
SRE:1
clientID:1
Error=3
customer1:126
SRE:1
clientID:1
Error=4
客户|错误123 1124 2125 3126 4
通常会显示您的一些作品或到目前为止您已经尝试过的东西,但这是您正在寻找的粗略猜测。
tmp$ awk -F: '/^customer1:/ {CUST=$2} ; /^Error/ {split($0,a,"=") ; print CUST, a[2]} ' t
或按行细分:
tmp$ awk -F: '\
> /^customer1:/ {CUST=$2} ; \
> /^Error/ {split($0,a,"=") ; print CUST, a[2]} \
> ' t
123 1
124 2
125 3
126 4
第一行
/^customer1:/ {CUST=$2} ;
做两件事-将以customer1开头的行(^表示开头)匹配,并且这些行自动在:上分割,因为我们在命令的开头说了-F:。
/^Error/ {split($0,a,"=") ; print CUST, a[2]} ;
匹配以Error开头的行,在定界符“ =”上将这些行拆分为数组a,然后输出CUST的最后一个值以及错误行的第二个字段。
希望一切都有意义。值得阅读awk教程,例如https://www.grymoire.com/Unix/Awk.html