<name>Charles</name>
<id>123</id>
<color>red</color>
...
用 sed 來操作,就是...
- 找到 符合 pattern 的地方
- 印出 pattern 的某個部份
以上面的例子,xml tag 的 pattern 和 value就是:
<.*> \(.*\) <\/.*>
前後被 tag 包起來,中間的部份要留下來 \(.*\)
把這個放到 sed 控制字串中:
sed 's/ <.*>\(.*\)<\/.*> / \1 /' file
一樣用 s 指令。最後用 \1 代表 pattern 中,第一個 \(.*\) 的內容。
這樣所有的 tag 都會被取出。
如果只是要某個 tag,例如 : id。
就可以把 id 寫入 pattern 中:
sed 's/ <id>\(.*\)<\/id> / \1 /' file
- http://www.unix.com/shell-programming-scripting/116920-sed-extract-xml-value.html
- http://alleightllc.wordpress.com/2007/12/13/extracting-htmlxml-tag-text-data-using-sed/
- http://www.grymoire.com/Unix/Sed.html