免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1878 | 回复: 3
打印 上一主题 下一主题

用shell根据报文体中的字段,将整个报文全部打印出来 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-02 10:42 |只看该作者 |倒序浏览
比如有个报文
<Request>
  <MsgType>xxxxxxxxxxxxx</MsgType>
  <TransactionID>xxxxxxxxxxxx</TransactionID>
  <Sender_Address>
    <UserName></UserName>
    <From>xxx</From>
    <UserPasswd></UserPasswd>
  </Sender_Address>
  <Channel_ID>xxxxx</Channel_ID>
  <CPID>xxx</CPID>
  <PackageID>XXXXXXXXXX</PackageID>
  <CPServiceID>xxxxx</CPServiceID>
  <OrderMonth>xxxx</OrderMonth>
  <SPID>xxxx</SPID>
</Request>

有什么方法能根据报文的中的一节:如  <PackageID>XXXXXXXXXX</PackageID>
然后将报文上下文全部打印出来
报文行数不定。

论坛徽章:
0
2 [报告]
发表于 2010-12-02 11:00 |只看该作者
那位大拿帮帮忙啊

论坛徽章:
0
3 [报告]
发表于 2010-12-02 11:10 |只看该作者
回复 1# kangshao


    这样?

ywlscpl@ubuntu:~$ cat file
<Request>
  <MsgType>xxxxxxxxxxxxx</MsgType>
  <CPID>xxx</CPID>
  <PackageID>222</PackageID>
  <SPID>xxxx</SPID>
</Request>

<Request>
  <CPID>xxx</CPID>
  <PackageID>111</PackageID>
  <CPServiceID>xxxxx</CPServiceID>
  <SPID>xxxx</SPID>
</Request>

ywlscpl@ubuntu:~$ awk -v RS="</Request>" -F "\n" '{for (i=1;i<=NF;i++) if ($i~/<PackageID>222<\/PackageID>/) print $0RT}' file
<Request>
  <MsgType>xxxxxxxxxxxxx</MsgType>
  <CPID>xxx</CPID>
  <PackageID>222</PackageID>
  <SPID>xxxx</SPID>
</Request>
ywlscpl@ubuntu:~$

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2010-12-02 21:46 |只看该作者
那位大拿帮帮忙啊
kangshao 发表于 2010-12-02 11:00



    这个意思吗?
  1. $ grep -A 1 -B 1 'PackageID' file1
  2. <CPID>xxx</CPID>                     
  3. <PackageID>XXXXXXXXXX</PackageID>                           
  4. <CPServiceID>xxxxx</CPServiceID>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP