我有一些台词,比如:
<channel update="i" site="merge-xmltv" site_id="" xmltv_id="Rai 1">Rai 1</channel>
<channel update="i" site="merge-xmltv" site_id="" xmltv_id="Rai 1 +2HD">Rai 1 +2HD</channel>
<channel update="i" site="merge-xmltv" site_id="" xmltv_id="Rai 1 +1HD">Rai 1 +1HD</channel>
我需要将
xmltv_id
的值复制到site_id
中,如下所示:<channel update="i" site="merge-xmltv" site_id="Rai 1" xmltv_id="Rai 1">Rai 1</channel>
<channel update="i" site="merge-xmltv" site_id="Rai 1 +2HD" xmltv_id="Rai 1 +2HD">Rai 1 +2HD</channel>
<channel update="i" site="merge-xmltv" site_id="Rai 1 +1HD" xmltv_id="Rai 1 +1HD">Rai 1 +1HD</channel>
我本来想用SED,但现在有麻烦了。
谢谢有人想帮我!
最佳答案
正如Ruslan Osmanov指出的那样,这类工作的工具是xmlstarlet
。最明显的解决方案是:
xmlstarlet ed -u "//channel/@site_id" -x "../@xmltv_id" input
但是,在我的
xmlstarlet
版本中,这似乎不起作用。但是,您可以解决该问题:xmlstarlet ed -u "//channel/@site_id" -x "string(../@xmltv_id)" input