我有一个包含以下文字的大日志文件:
C:\>mml "hgsdp:imsi=404421896673168, all;" | findstr CSP
C:\>mml "hgsdp:imsi=404421911915615, all;" | findstr CSP
RSA-5 PDPCP-5 CSP-42 REDMCH-1
C:\>mml "hgsdp:imsi=404421800964442, all;" | findstr CSP
BS3G-1 RSA-5 PDPCP-5 CSP-40
C:\>mml "hgsdp:imsi=404421737909153, all;" | findstr CSP
C:\>mml "hgsdp:imsi=404421852512826, all;" | findstr CSP
RSA-5 PDPCP-5 CSP-21 REDMCH-1
我有兴趣抓住CSP - ###的价值来自" imsi = 4044 ##"并写入另一个文件以及相应的4044 ##号。 因此,样本的最终输出将是:
404421896673168 NIL
404421911915615 CSP-42
404421800964442 CSP-40
404421737909153 NIL
404421852512826 CSP-21
我尝试过使用awk但无法使用它:
awk '/4044%/{N=NR+1;next} NR==N{print $3}' csp.log > output.txt
感谢您能提供帮助。
答案 0 :(得分:1)
你可以使用这个awk:
awk -F '[[:blank:]:=,]+' '/findstr CSP/ && $4=="imsi" {
if (imsi != "")
print imsi, "NIL"
imsi=$5
next
}
/CSP-/ {
for(i=1; i<=NF; i++)
if ($i ~ /CSP-/)
break
print imsi, $i
imsi=""
}' file
404421896673168 NIL
404421911915615 CSP-42
404421800964442 CSP-40
404421737909153 NIL
404421852512826 CSP-21