我需要更新 xml 文件的帮助,file1.xml
该文件有一个标签 name <abc> <\abc>
。
有固定长度的数字file2.txt
(每行 1 个数字):
1234
5678
1435
我需要输出到 newfile.xml:
<abc>1234,5678,1435<\abc>
有什么awk
选项sed
吗?
谢谢
答案1
这个问题有两个部分,使用不同的工具
file2.txt
用逗号连接行paste -s -d',' file2.txt 1234,5678,1435
将一个值插入到 XML 文件中(实际上是更新空文件)。这需要我将您的非 XML 修复为 XML:
cat file1.xml <abc> </abc> xmlstarlet edit --update '//abc' --value 'test' file1.xml <?xml version="1.0"?> <abc>test</abc>
一旦确定输出符合您的预期,您就可以
xmlstarlet
使用edit --inplace
.
把这些放在一起,
data=$(paste -s -d',' file2.txt)
xmlstarlet edit --inplace --update '//abc' --value "$data" file1.xml
cat file1.xml
<?xml version="1.0"?>
<abc>1234,5678,1435</abc>
答案2
perl -pne "s/\n/,/g" k.txt| sed -e "s/^/\<abc>/g" -e "s/,$//g" -e "s/$/\<\\\abc>/g"
输出
<abc>1234,5678,1435<\abc>