Como posso usar o sed para encontrar uma string e substituir outra string em uma linha diferente? [fechadas]

0

Eu tenho um arquivo como este:

BEGIN
Name "TIPO_RECORD"
SqlType "12"
         Precision "255"
Name "Test"
         SqlType "12"
         Precision "255"
Name "xxxx"
         SqlType "12"
         Precision "255"
Name "Test"
         SqlType "12"
         Precision "255"
END

Eu preciso de um script que encontre a string "TEST" e, em seguida, substitua a primeira string "PRECISION" por "TRY".

    
por Emanuele 18.06.2015 / 12:43

1 resposta

1

Supondo que você queira substituir o texto como em seu exemplo, você pode fazer:

sed '/Name "Test"/ {n;n;s/Precision/Try/;}'

Para fazer isso insensível, tente:

sed '/Name "[Tt][Ee][Ss][Tt]"/ {n;n;s/[Pp][Rr][Ee][Cc][Ii][Ss][Ii][Oo][Nn]/Try/;}'

Ou mais simplesmente com o GNU sed :

sed '/Name "Test"/I {n;n;s/precision/Try/i;}'
    
por 18.06.2015 / 13:02