bash script altera uma palavra para um arquivo

1

Eu tenho um arquivo como este:

PRODUCT: $name | YEAR: $year | TYPE: $type
PRODUCT2: $name2 | YEAR: $year | TYPE: $type2
PRODUCT3: $name3 | YEAR: $year | TYPE: $type
PRODUCT4: $name4 | YEAR: $year | TYPE: $type3
PRODUCT5: $name5 | YEAR: $year | TYPE: $type
PRODUCT6: $name6 | YEAR: $year | TYPE: $type
PRODUCT7: $name7 | YEAR: $year | TYPE: $type3
PRODUCT8: $name8 | YEAR: $year | TYPE: $type2


E eu quero mudar um campo específico.
Por exemplo, eu quero mudar o tipo de PRODUCT5 de $ type para $ type2 , mas eu não quero substituir o todo line , apenas o campo que eu gostaria de mudar!
Isso é possível?

    
por Paolo 19.12.2011 / 12:35

1 resposta

4

awk pode ajudar:

awk '{ if ( == "PRODUCT5:")  = "$type2"; print }' input
mv output input

ou sed

sed -i '/^PRODUCT5/s/$type$/$type2/' input
    
por enzotib 19.12.2011 / 12:44