我需要更新标签 带有来自另一个文件的变量。输出应该是一个 xml 文件,所有这些值都在 abc 标记内以逗号分隔

我需要更新标签 带有来自另一个文件的变量。输出应该是一个 xml 文件,所有这些值都在 abc 标记内以逗号分隔

我需要更新 xml 文件的帮助,file1.xml该文件有一个标签 name <abc> <\abc>

有固定长度的数字file2.txt(每行 1 个数字):

1234
5678
1435

我需要输出到 newfile.xml:

<abc>1234,5678,1435<\abc>

有什么awk选项sed吗?

谢谢

答案1

这个问题有两个部分,使用不同的工具

  1. file2.txt用逗号连接行

    paste -s -d',' file2.txt
    1234,5678,1435
    
  2. 将一个值插入到 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>

相关内容