首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本文件中的读写匹配模式

文本文件中的读写匹配模式
EN

Stack Overflow用户
提问于 2016-03-22 11:32:48
回答 1查看 60关注 0票数 1

我有一个包含文本的大日志文件,如下所示:

代码语言:javascript
复制
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##编号一起写入另一个文件。因此,该示例的最终输出将是:

代码语言:javascript
复制
404421896673168 NIL
404421911915615 CSP-42
404421800964442 CSP-40
404421737909153 NIL
404421852512826 CSP-21

我试过使用awk,但无法使它工作:

代码语言:javascript
复制
awk '/4044%/{N=NR+1;next} NR==N{print $3}' csp.log > output.txt

感谢你能帮上忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-22 11:54:48

您可以使用这个awk:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36153265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档