awk 'BEGIN{RS="<!--|-->"}NR%2' urfile 作用awk过滤xml注释,这句话该如何理解呢?

麻烦请详细解释一下,awk入门级别,很迷糊。... 麻烦请详细解释一下,awk入门级别,很迷糊。 展开
 我来答
百度网友5311d79
2013-12-16 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3226万
展开全部
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:start123
期望结果:start 123 。实际结果:start 123。
(2)例子2:
testLine1
start123
实际结果:testLine1 start 和123。
疑问就出来了,这个奇数行该怎么理解呢?
追答
RS="" 设置记录分隔符为,两者皆可用于分隔记录。
奇数行,这里的“行”指的是通过awk的记录分隔符分割出来的记录。awk中的一条记录就是一行。
例子2中,分割出来就是:
testLine1\nstart (这是一条记录,换行用\n表示)
abcdefg
123
打印的时候,\n自动还原为换行符。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式