Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在xml文件中用连接的值动态搜索和替换字符串_Xml_Search_Replace_Awk_Sed - Fatal编程技术网

在xml文件中用连接的值动态搜索和替换字符串

在xml文件中用连接的值动态搜索和替换字符串,xml,search,replace,awk,sed,Xml,Search,Replace,Awk,Sed,需要将xml文件中的字符串替换为字符串加增量值,还需要应用于目录中的所有文件。当我们知道元素中的值'NA',但大多数情况下值未知时,此awk命令将被替换 awk '/ID>\/{sub(/ID>NA/,"ID>NA"++n)}; 1' File1.xml <ID>NA</ID> <Subject>ASDF</Subject> ... <ID>LONEY</ID> <Subject>ASDF&

需要将xml文件中的字符串替换为字符串加增量值,还需要应用于目录中的所有文件。当我们知道元素中的值'NA',但大多数情况下值未知时,此awk命令将被替换

awk '/ID>\/{sub(/ID>NA/,"ID>NA"++n)}; 1'
File1.xml

<ID>NA</ID>
<Subject>ASDF</Subject>
 ...
<ID>LONEY</ID>
<Subject>ASDF</Subject>
...
<ID>ZXS01DR</ID>
<Subject>ASDF</Subject>
...
<ID>QWDRTYYUUU9282</ID>
<Subject>ASDF</Subject>
<ID>NA_1</ID>
<Subject>ASDF</Subject>
 ...
<ID>LONEY_2</ID>
<Subject>ASDF</Subject>
...
<ID>ZXS01DR_3</ID>
<Subject>ASDF</Subject>
...
<ID>QWDRTYYUUU9282_4</ID>
<Subject>ASDF</Subject>
NA
ASDF
...
孤独的
ASDF
...
ZXS01DR
ASDF
...
QWDRTYYUU9282
ASDF
预期结果: File1.xml

<ID>NA_1</ID>
<Subject>ASDF</Subject>
 ...
<ID>LONEY_2</ID>
<Subject>ASDF</Subject>
...
<ID>ZXS01DR_3</ID>
<Subject>ASDF</Subject>
...
<ID>QWDRTYYUUU9282_4</ID>
<Subject>ASDF</Subject>
NA_1
ASDF
...
LONEY_2
ASDF
...
ZXS01DR_3
ASDF
...
qwdrtyyuu9282_4
ASDF

要编辑XML文件,请使用适当的XML处理工具。例如:

对于gensub(),使用GNU awk:


$awk'/ID>/{$0=gensub(/ID>[^[^ExpectedResult:
File1.xml NA_1 ASDF…LONEY_2 ASDF…ZXS01DR_3 ASDF…QWDRTYYUUU9282_4 ASDF
xsh未在我们的环境中设置
$ awk '/ID>/{$0=gensub(/ID>[^<]+/,"&_"++n,1)} 1' file
<ID>NA_1</ID>
<Subject>ASDF</Subject>
 ...
<ID>LONEY_2</ID>
<Subject>ASDF</Subject>
...
<ID>ZXS01DR_3</ID>
<Subject>ASDF</Subject>
...
<ID>QWDRTYYUUU9282_4</ID>
<Subject>ASDF</Subject>
$ awk 'match($0,/.*ID>[^<]+/){$0=substr($0,1,RLENGTH) "_"++n substr($0,RLENGTH+1)}1' file
<ID>NA_1</ID>
<Subject>ASDF</Subject>
 ...
<ID>LONEY_2</ID>
<Subject>ASDF</Subject>
...
<ID>ZXS01DR_3</ID>
<Subject>ASDF</Subject>
...
<ID>QWDRTYYUUU9282_4</ID>
<Subject>ASDF</Subject>