file1.xml
タグ名を含むxmlファイルを更新するのに役立ちます<abc> <\abc>
。
固定長の数字がありますfile2.txt
(1行に1つの数字)。
1234
5678
1435
newfile.xmlとして出力する必要があります。
<abc>1234,5678,1435<\abc>
どんなawk
オプションがありますかsed
?
ありがとう
答え1
この質問は、異なるツールを使用して2つの部分で構成されています。
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>