首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除字符串,直到shell脚本中的第二次出现

删除字符串,直到shell脚本中的第二次出现
EN

Stack Overflow用户
提问于 2016-06-05 01:01:48
回答 2查看 194关注 0票数 1

我的shell脚本执行以下操作:

代码语言:javascript
运行
复制
grep '<record' /data/error/usage_20160422_165920.lerr.xml|sed -e 's/&apos;//g'|cut -d ';' -f1,40,43,46

结果看起来就像

代码语言:javascript
运行
复制
<record record_no = "1" error_code="101">;RevShare-2.txt;TWN;1

我希望删除<record record_no = "1" error_code=标记,结果应该类似于101;RevShare-2.txt;TWN;1

记录nos#是动态的。

编辑:我添加了cut -d '=' -f3|tr -d '",>'来实现这一点。这是可行的,但需要3秒来处理一个包含20,000条记录的文件。我每天有500个文件。是否有更好的方法来加快这一进程?

编辑:下面是记录的样子。

代码语言:javascript
运行
复制
<record record_no = "1" error_code="101">&apos;&apos;;&apos;25467&apos;;&apos;&apos;;&apos;&apos;;&apos;FIRSTNAME&apos;;&apos;Manikin&apos;;&apos;1234001&apos;;&apos;12484254823&apos;;&apos;&apos;;&apos;&apos;;&apos;&apos;;&apos;103&apos;;&apos;12484254815&apos;;&apos;XXXXX9680&apos;;&apos;OFX&apos;;&apos;0&apos;;&apos;1028000002130745&apos;;&apos;20160422&apos;;&apos;0000&apos;;&apos;25467&apos;;&apos;20160422&apos;;&apos;Y&apos;;&apos;&apos;;&apos;&apos;;&apos;6&apos;;&apos;2&apos;;&apos;1&apos;;&apos;0&apos;;&apos;&apos;;&apos;263&apos;;&apos;99&apos;;&apos;N&apos;;&apos;&apos;;&apos;Idverifyprod@50&apos;;&apos;136&apos;;&apos;7, 74, 77, 80, 105, 136, 153&apos;;&apos;0&apos;;&apos;&apos;;&apos;501&apos;;&apos;RevShare-2.txt&apos;;&apos;20160422165920&apos;;&apos;000009680&apos;;&apos;TWN&apos;;&apos;1449587762538&apos;;&apos;1&apos;;&apos;1&apos;;&apos;0&apos;;&apos;&apos;;&apos;Verifier&apos;
</record>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-05 13:55:12

代码语言:javascript
运行
复制
$ awk '
BEGIN { FS=OFS=";" }
/<record/ {
    gsub(/&apos;/,"")
    gsub(/.*="|">/,"",$1)
    print $1, $40, $43, $46
}
' /data/error/usage_20160422_165920.lerr.xml
101;RevShare-2.txt;TWN;1
票数 1
EN

Stack Overflow用户

发布于 2016-06-05 13:03:48

当其他字段没有像error_code这样的字符串时,您可以执行以下操作

代码语言:javascript
运行
复制
 | sed 's/.* error_code="[^"]*">/\1/'

你能把不同的命令组合起来吗?有点像

代码语言:javascript
运行
复制
cut -d ';' -f1,40,43,46 /data/error/usage_20160422_165920.lerr.xml|
   sed -n '/<record/p;s/&apos;//g;s/.* error_code="[^"]*">/\1/'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37636459

复制
相关文章

相似问题

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