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

时间:2015-09-23 16:10:49

标签: xml search replace awk sed

需要将字符串替换为字符串加上xml文件中的增量值,还需要申请目录中的所有文件。当我们知道价值' NA'在元素中,但大多数情况下的值是未知的。

convert input.png -resize 512x256 output.png

File1.xml

-strip

预期成果: File1.xml

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

2 个答案:

答案 0 :(得分:1)

要编辑XML文件,请使用正确的XML处理工具。例如,xsh

open File1.xml ;
$n=1 ;
for //ID {
    set . concat(text(), '_', $n) ;
    $n = $n + 1 ;
}
save :b ;

答案 1 :(得分:0)

使用GNU awk for gensub():

$ 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>

使用其他awks,您可以使用match()+ substr():

$ 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>