我在一个大的 xml 文件中有数百个 svg 图表,我想在其中更改
<svg:g transform="matrix(1 0 0 1 59.06 88.74)">
88.74 到 98.74 即向以 开头的每一行添加 10
<svg:g transform="matrix(
没有太多的手工,如何才能完成这项任务呢?我知道有替换,但添加却没有引起我的注意。
答案1
我的回答是awk
:
awk -F'[ ")>]' '/\<svg\:g transform\=\"matrix\(/ {sub($(NF-3), 10+$(NF-3))}1' infile > outfile
awk
带有选项的命令-F
将 space 、
"
、)
和定义>
为字段分隔符。然后搜索包含pattern的行<svg:g transform="matrix(
。下一个取货字段$(NF-3)
并将其替换为添加的 10 个值。
$(NF)
-> 最后>
,$(NF-1)
-> 是最后"
,$(NF-2)
-> 是最后)
,最后$(NF-3)
-> 是我想要添加 +10 值的期望值。
<svg:g transform="matrix(1 0 0 1 59.06 88.74 ) " >
$(NF-3) $(NF-2) $(NF-1) $(NF)
输入:
<svg:g transform="matrix(1 0 0 1 59.06 4.74)">
<svg:g transform="matrix(1 0 0 1 59.06 88.74)">
<svg:g transform="matrix(1 0 0 1 59.06 5.74)">
输出:
<svg:g transform="matrix(1 0 0 1 59.06 14.74)">
<svg:g transform="matrix(1 0 0 1 59.06 98.74)">
<svg:g transform="matrix(1 0 0 1 59.06 15.74)">