Text-Processing
XML 中的大替換
好的,所以我有這個 xml 文件。我需要用另一個文件(txt)中的值替換每個鍵值。兩個文件都被排序,所以第 20 行,即在 xml
<word key="ACTIVE" group="Service application" value="testvalue1"/>
在我的第二個文件中,第 20 行將是
testvalue2
我正在尋找將值從 testvalue1 更改為 testvalue2 的東西
這應該有效。
我們載入新的值文件,然後我們通過使用行號作為鍵將舊值替換為新值來處理 xml 文件。
awk 'FNR==NR{a[FNR]=$0;next}{$NF=gensub(/value=".*"\/>/,"value=\""a[FNR]"\"\/>","g",$NF);print}' file2 file #OR working with regex groups: awk 'FNR==NR{a[FNR]=$0;next}{$NF=gensub(/(value=")(.*)(".+)/,"\\1"a[FNR]"\\3","g",$NF);print}' file2 file
測試:
$ cat file <word key="ACTIVE" group="Service application" value="testvalue1"/> <word key="ACTIVE" group="Service application" value="testvalue2"/> <word key="ACTIVE" group="Service application" value="testvalue3"/> <word key="ACTIVE" group="Service application" value="testvalue4"/> <word key="ACTIVE" group="Service application" value=""/> $ cat file2 newvalue1 newvalue2 newvalue3 newvalue4 newvalue5 $ awk 'FNR==NR{a[FNR]=$0;next}{$NF=gensub(/value=".*"\/>/,"value=\""a[FNR]"\"\/>","g",$NF);print}' file2 file <word key="ACTIVE" group="Service application" value="newvalue1"/> <word key="ACTIVE" group="Service application" value="newvalue2"/> <word key="ACTIVE" group="Service application" value="newvalue3"/> <word key="ACTIVE" group="Service application" value="newvalue4"/> <word key="ACTIVE" group="Service application" value="newvalue5"/>