sed 如何只读取第一次出现的字符
时间:2011-05-10
来源:互联网
file.txt内容如下
xmldata=%3C%3Fxml+version%3D%221.0%22%3F%3E%0A%3CInterBOSS%3E%0A++%3COrigDomain%3EBOSS%3C%2FOrigDomain%3E%0A++%3CHomeDomain%3EPIMM%3C%2FHomeDomain%3E%0A++%3CBIPCode%3EBIP2B210%3C%2FBIPCode%3E%0A++%3CBIPVer%3E0100%3C%2FBIPVer%3E%0A++%3CActivityCode%3ET2101225%3C%2FActivityCode%3E%0A++%3CActionCode%3E0%3C%2FActionCode%3E%0A++%3CRouting%3E%0A++++%3CRouteType%3E00%3C%2FRouteType%3E%0A++++%3CRouteValue%3E000%3C%2FRouteValue%3E%0A++%3C%2FRouting%3E%0A++%3CProcID%3E2011030713560415483657%3C%2FProcID%3E%0A++%3CTransIDO%3E2011030713560476197191%3C%2FTransIDO%3E%0A++%3CTransIDH%3E%3C%2FTransIDH%3E%0A++%3CProcessTime%3E20110307135604%3C%2FProcessTime%3E%0A++%3CSPReserve%3E%0A++++%3CTransIDC%3E7310BOSS2011030713560476197191%3C%2FTransIDC%3E%0A++++%3CCutOffDay%3E20110307%3C%2FCutOffDay%3E%0A++++%3COSNDUNS%3E7310%3C%2FOSNDUNS%3E%0A++++%3CHSNDUNS%3E0000%3C%2FHSNDUNS%3E%0A++++%3CConvID%3EBOSS73105555201103071356047619719120110307135604829%3C%2FConvID%3E%0A++%3C%2FSPReserve%3E%0A++%3CTestFlag%3E0%3C%2FTestFlag%3E%0A++%3CMsgSender%3E0000%3C%2FMsgSender%3E%0A++%3CMsgReceiver%3E0005%3C%2FMsgReceiver%3E%0A++%3CSvcContVer%3E0100%3C%2FSvcContVer%3E%0A++%3CSvcCont%3E%3C%21%5BCDATA%5B%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A%3CUDR%3E%0A++++%3CCrtT%3E20110307135604%3C%2FCrtT%3E%0A++++%3CPkgSeq%3E197186%3C%2FPkgSeq%3E%0A++++%3CUDSum%3E2%3C%2FUDSum%3E%0A++++%3CUD%3E%0A++++++++%3CIDV%3E15873754652%3C%2FIDV%3E%0A++++++++%3COpr%3E07%3C%2FOpr%3E%0A++++++++%3CBizType%3E10%3C%2FBizType%3E%0A++++++++%3COprT%3E20110307135554%3C%2FOprT%3E%0A++++++++%3CEfftT%3E20110307135433%3C%2FEfftT%3E%0A++++++++%3CSrc%3E08%3C%2FSrc%3E%0A++++++++%3CChgFlg%3E0%3C%2FChgFlg%3E%0A++++++++%3CBillFlg%3E2%3C%2FBillFlg%3E%0A++++++++%3CBizOrder%3E%0A++++++++++++%3CSPID%3E698022%3C%2FSPID%3E%0A++++++++++++%3CSPBizCode%3E100000%3C%2FSPBizCode%3E%0A++++++++%3C%2FBizOrder%3E%0A++++%3C%2FUD%3E%0A++++%3CUD%3E%0A++++++++%3CIDV%3E18274561808%3C%2FIDV%3E%0A++++++++%3COpr%3E07%3C%2FOpr%3E%0A++++++++%3CBizType%3E10%3C%2FBizType%3E%0A++++++++%3COprT%3E20110307135558%3C%2FOprT%3E%0A++++++++%3CEfftT%3E20110307135558%3C%2FEfftT%3E%0A++++++++%3CSrc%3E08%3C%2FSrc%3E%0A++++++++%3CChgFlg%3E0%3C%2FChgFlg%3E%0A++++++++%3CBillFlg%3E2%3C%2FBillFlg%3E%0A++++++++%3CBizOrder%3E%0A++++++++++++%3CSPID%3E698022%3C%2FSPID%3E%0A++++++++++++%3CSPBizCode%3E100000%3C%2FSPBizCode%3E%0A++++++++%3C%2FBizOrder%3E%0A++++%3C%2FUD%3E%0A%3C%2FUDR%3E%5D%5D%3E%3C%2FSvcCont%3E%0A%3C%2FInterBOSS%3E
grep "IDV" file.txt | sed -e 's/.*CIDV//'|sed -e 's/IDV.*//'|awk -F'%' '{print $2}'|sed 's/.*E//'
结果:
18274561808
我想要的是第一次出现"IDV"标签中号码15873754652而不是最后一次出现"IDV"标签内的号码怎么写呢?
xmldata=%3C%3Fxml+version%3D%221.0%22%3F%3E%0A%3CInterBOSS%3E%0A++%3COrigDomain%3EBOSS%3C%2FOrigDomain%3E%0A++%3CHomeDomain%3EPIMM%3C%2FHomeDomain%3E%0A++%3CBIPCode%3EBIP2B210%3C%2FBIPCode%3E%0A++%3CBIPVer%3E0100%3C%2FBIPVer%3E%0A++%3CActivityCode%3ET2101225%3C%2FActivityCode%3E%0A++%3CActionCode%3E0%3C%2FActionCode%3E%0A++%3CRouting%3E%0A++++%3CRouteType%3E00%3C%2FRouteType%3E%0A++++%3CRouteValue%3E000%3C%2FRouteValue%3E%0A++%3C%2FRouting%3E%0A++%3CProcID%3E2011030713560415483657%3C%2FProcID%3E%0A++%3CTransIDO%3E2011030713560476197191%3C%2FTransIDO%3E%0A++%3CTransIDH%3E%3C%2FTransIDH%3E%0A++%3CProcessTime%3E20110307135604%3C%2FProcessTime%3E%0A++%3CSPReserve%3E%0A++++%3CTransIDC%3E7310BOSS2011030713560476197191%3C%2FTransIDC%3E%0A++++%3CCutOffDay%3E20110307%3C%2FCutOffDay%3E%0A++++%3COSNDUNS%3E7310%3C%2FOSNDUNS%3E%0A++++%3CHSNDUNS%3E0000%3C%2FHSNDUNS%3E%0A++++%3CConvID%3EBOSS73105555201103071356047619719120110307135604829%3C%2FConvID%3E%0A++%3C%2FSPReserve%3E%0A++%3CTestFlag%3E0%3C%2FTestFlag%3E%0A++%3CMsgSender%3E0000%3C%2FMsgSender%3E%0A++%3CMsgReceiver%3E0005%3C%2FMsgReceiver%3E%0A++%3CSvcContVer%3E0100%3C%2FSvcContVer%3E%0A++%3CSvcCont%3E%3C%21%5BCDATA%5B%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A%3CUDR%3E%0A++++%3CCrtT%3E20110307135604%3C%2FCrtT%3E%0A++++%3CPkgSeq%3E197186%3C%2FPkgSeq%3E%0A++++%3CUDSum%3E2%3C%2FUDSum%3E%0A++++%3CUD%3E%0A++++++++%3CIDV%3E15873754652%3C%2FIDV%3E%0A++++++++%3COpr%3E07%3C%2FOpr%3E%0A++++++++%3CBizType%3E10%3C%2FBizType%3E%0A++++++++%3COprT%3E20110307135554%3C%2FOprT%3E%0A++++++++%3CEfftT%3E20110307135433%3C%2FEfftT%3E%0A++++++++%3CSrc%3E08%3C%2FSrc%3E%0A++++++++%3CChgFlg%3E0%3C%2FChgFlg%3E%0A++++++++%3CBillFlg%3E2%3C%2FBillFlg%3E%0A++++++++%3CBizOrder%3E%0A++++++++++++%3CSPID%3E698022%3C%2FSPID%3E%0A++++++++++++%3CSPBizCode%3E100000%3C%2FSPBizCode%3E%0A++++++++%3C%2FBizOrder%3E%0A++++%3C%2FUD%3E%0A++++%3CUD%3E%0A++++++++%3CIDV%3E18274561808%3C%2FIDV%3E%0A++++++++%3COpr%3E07%3C%2FOpr%3E%0A++++++++%3CBizType%3E10%3C%2FBizType%3E%0A++++++++%3COprT%3E20110307135558%3C%2FOprT%3E%0A++++++++%3CEfftT%3E20110307135558%3C%2FEfftT%3E%0A++++++++%3CSrc%3E08%3C%2FSrc%3E%0A++++++++%3CChgFlg%3E0%3C%2FChgFlg%3E%0A++++++++%3CBillFlg%3E2%3C%2FBillFlg%3E%0A++++++++%3CBizOrder%3E%0A++++++++++++%3CSPID%3E698022%3C%2FSPID%3E%0A++++++++++++%3CSPBizCode%3E100000%3C%2FSPBizCode%3E%0A++++++++%3C%2FBizOrder%3E%0A++++%3C%2FUD%3E%0A%3C%2FUDR%3E%5D%5D%3E%3C%2FSvcCont%3E%0A%3C%2FInterBOSS%3E
grep "IDV" file.txt | sed -e 's/.*CIDV//'|sed -e 's/IDV.*//'|awk -F'%' '{print $2}'|sed 's/.*E//'
结果:
18274561808
我想要的是第一次出现"IDV"标签中号码15873754652而不是最后一次出现"IDV"标签内的号码怎么写呢?
作者: situxiaoquan1 发布时间: 2011-05-10
try:
复制代码
- sed 's/CIDV%3E/\n/g;s/%3C%2FIDV/\n/g' urfile | grep -Ewo "[0-9]{10,}" | head -n1
作者: xiaopan3322 发布时间: 2011-05-10
回复 situxiaoquan1
笨点的方法:
|sed 's/.*\(3CIDV%3E15873754652%3C%2FIDV%3E%\).*/\1/g'|sed 's/.*\(15873754652\).*/\1/g'
笨点的方法:
|sed 's/.*\(3CIDV%3E15873754652%3C%2FIDV%3E%\).*/\1/g'|sed 's/.*\(15873754652\).*/\1/g'
作者: db2-zhang 发布时间: 2011-05-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28