Chinaunix
标题:
用shell根据报文体中的字段,将整个报文全部打印出来
[打印本页]
作者:
kangshao
时间:
2010-12-02 10:42
标题:
用shell根据报文体中的字段,将整个报文全部打印出来
比如有个报文
<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>
然后将报文上下文全部打印出来
报文行数不定。
作者:
kangshao
时间:
2010-12-02 11:00
那位大拿帮帮忙啊
作者:
ywlscpl
时间:
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:~$
作者:
L_kernel
时间:
2010-12-02 21:46
那位大拿帮帮忙啊
kangshao 发表于 2010-12-02 11:00
这个意思吗?
$ grep -A 1 -B 1 'PackageID' file1
<CPID>xxx</CPID>
<PackageID>XXXXXXXXXX</PackageID>
<CPServiceID>xxxxx</CPServiceID>
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2