这是一条通知消息:在每个中包好多个文件,我们要在日志同统计通知了多少个文件,需要将这些文件名提取出来
[INFO] 2017-02-22 23:28:36,070 notfiy info:
<NotifyInfo Id ='1487777316070'>
<DataCatalog>lte_s10_s11</DataCatalog>
<WorkMode>WSFTP</WorkMode>
<SystemID>IPMS</SystemID>
<ConnectionString>ftp://10.221.245.66</ConnectionString>
<Path>/20170222/23/lte/s11</Path>
<UserName>dxpanalysis</UserName>
<Password>dxpanalysis@123</Password>
<Files>
<Filename createTime='2017-02-22T23:28:24'>001_201702222325_0220_07.CSV</Filename>
<Filename createTime='2017-02-22T23:28:24'>001_201702222325_0227_05.CSV</Filename>
<Filename createTime='2017-02-22T23:28:24'>001_201702222325_0208_06.CSV</Filename>
<Filename createTime='2017-02-22T23:28:24'>001_201702222325_0231_05.CSV</Filename>
<Filename createTime='2017-02-22T23:28:25'>001_201702222325_022f_04.CSV</Filename>
</Files>
</NotifyInfo> location:com.nokia.business.SendMessage.run(SendMessage.java:94)
如何提取文件名
如果将文件名拆分到单独一行,通过过滤CSV,将>换成换行符,
再将CSV换成CSV\n,那么文件名就单独成行。
我们通过sed替换,实现此功能
<Filename createTime='2017-02-22T23:28:24'>001_201702222325_0220_07.CSV</Filename>
测试:
cat test | sed 's/CSV/CSV\n/g' |sed 's/>/\n/g' |grep CSV |wc -l