首页 > 代码库 > 用awk/sed去掉xml中的注释
用awk/sed去掉xml中的注释
1. awk ‘BEGIN{RS="<!--|-->"}NR%2‘ urfile
2. sed ‘/<!--/{:a;/-->/!{N;ba}};/<!--/d‘
RS (Record Separator), 记录分隔符 RS="<!--|-->" 设置记录分隔符为<!--或者-->,两者皆可用于分隔记录。 start<!--abcdefg-->123 这样分割出来就是三条记录start , abcdefg 和 123. NR (Number of Records), 记录数,awk是以行(记录)为单位处理文本的,每读入一行NR就增1 NR%2 ,我换一种写法你就明白了:NR%2 != 0 {print} 就是说,只打印奇数行。
追问
额,首先谢谢您的回答。NR%2是打印奇数行,这个奇数行是指整个文档的奇数行吗? 比如 (1)例子1:start<!--abcdefg-->123 期望结果:start 123 。实际结果:start 123。 (2)例子2: testLine1 start<!--abcdefg-->123 实际结果:testLine1 start 和123。 疑问就出来了,这个奇数行该怎么理解呢?
追答
RS="<!--|-->" 设置记录分隔符为<!--或者-->,两者皆可用于分隔记录。 奇数行,这里的“行”指的是通过awk的记录分隔符分割出来的记录。awk中的一条记录就是一行。 例子2中,分割出来就是: testLine1\nstart (这是一条记录,换行用\n表示) abcdefg 123 打印的时候,\n自动还原为换行符。
本文出自 “愺艮搥豩” 博客,请务必保留此出处http://riverxyz.blog.51cto.com/533303/1873950
用awk/sed去掉xml中的注释
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。