Awk

我需要用另一個文件中的變數更新標籤 <abc><abc> 。輸出應該是一個 xml 文件,所有這些值用逗號分隔在 abc 標記中

  • April 7, 2022

我需要幫助更新一個file1.xml帶有標籤名稱的 xml 文件&lt;abc&gt; &lt;\abc&gt;

具有固定長度的file2.txt數字(每行 1 個數字):

1234
5678
1435

我需要輸出到 newfile.xml:

&lt;abc&gt;1234,5678,1435&lt;\abc&gt;

任何awksed請選擇?

謝謝

這個問題有兩個部分,它們使用不同的工具

  1. file2.txt用逗號連接行
paste -s -d',' file2.txt
1234,5678,1435
  1. 在 XML 文件中插入一個值(實際上是更新空的)。這需要我將您的非 XML 修復為 XML:
cat file1.xml
&lt;abc&gt; &lt;/abc&gt;

xmlstarlet edit --update '//abc' --value 'test' file1.xml
&lt;?xml version="1.0"?&gt;
&lt;abc&gt;test&lt;/abc&gt;

一旦你確定輸出是你所期望的,你可以告訴你xmlstarlet使用edit --inplace.

把這些放在一起,

data=$(paste -s -d',' file2.txt)
xmlstarlet edit --inplace --update '//abc' --value "$data" file1.xml

cat file1.xml
&lt;?xml version="1.0"?&gt;
&lt;abc&gt;1234,5678,1435&lt;/abc&gt;

引用自:https://unix.stackexchange.com/questions/696460