Adicione 10 a um valor em um arquivo xml grande

1

Eu tenho em um grande arquivo xml algumas centenas de svg gráficos onde eu quero mudar o

<svg:g transform="matrix(1 0 0 1 59.06 88.74)">

88,74 a 98,74, ou seja, adicionar 10 a cada linha que começa com

<svg:g transform="matrix(

Como alguém pode conseguir essa tarefa sem muito trabalho manual? Eu sei de substituições, mas acréscimos escaparam da minha atenção.

    
por Bernhard Kleine 26.11.2014 / 13:54

1 resposta

0

Minha resposta com awk :

awk -F'[ ")>]' '/\<svg\:g transform\=\"matrix\(/ {sub($(NF-3), 10+$(NF-3))}1' infile > outfile
O comando

awk com a opção -F define o espaço , " , ) e > como separadores de campo. em seguida, procure a linha que contém o padrão <svg:g transform="matrix( . próximo campo de coleta $(NF-3) e substituí-lo por 10 valor adicionado a isso.

$(NF) - > último > , $(NF-1) - > é a última " , $(NF-2) - > é a última ) e finalmente $(NF-3) - > é o valor desejado que deseja adicionar um valor de +10.

<svg:g transform="matrix(1 0 0 1 59.06  88.74    )        "      >
                                       $(NF-3) $(NF-2) $(NF-1) $(NF)

Entrada:

<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)">

Saída:

<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)">
    
por 26.11.2014 / 15:48