用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自動還原爲換行符。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章