从shell

时间:2017-11-20 14:01:55

标签: xml shell xml-parsing

我必须遵循xml结构:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DOC SYSTEM "ts.dtd">
<?xml-stylesheet type="text/css" href="ts.css"?>
<DOC LOCALE="en-US"> 
   <PTXT ID="some.first.id" CONTEXT="">Some text 1</PTXT> 
   <PTXT ID="some.second.id" CONTEXT="">Some text 2</PTXT> 
</DOC>

现在我的挑战是循环每个PTXT标签并使用ID和内部文本执行某些操作。例如,让我们说我需要回应像

这样的东西
some.first.id Some text 1
some.second.id Some text 2

我如何在shell脚本中拥有它?

1 个答案:

答案 0 :(得分:1)

使用xmlstarlet工具完成解决方案:

xmlstarlet sel -t -m "//PTXT" -v "concat(./@ID,' ',text())" -n input.xml 2>/dev/null

输出:

some.first.id Some text 1
some.second.id Some text 2