Algumas maneiras:
-
Provavelmente, da maneira mais direta, correspondendo a chave apropriada por
/Key2/
e, em seguida, substituindoValue2
porValue4
:$ sed '/Key2/ s/Value2/Value4/' foo.txt Key1=Value1 Key2=Value4 Key3=Value3
-
Se você sabe que os dígitos virão finalmente e se você quer apenas substituir esses dígitos por outra coisa (aqui substituindo
2
por4
):$ sed '/Key2/ s/[[:digit:]]\+$/4/' foo.txt Key1=Value1 Key2=Value4 Key3=Value3
Eu também tenho algumas outras maneiras, mas elas dependem do seu caso de uso. Deixe-nos saber se isso seria suficiente.
Seus erros em sed -i -e '/KEY=/ s/= .*/= new_value/' /path/to/file
:
-
De acordo com o seu exemplo, nenhum
Key
será correspondido com/KEY=/
, pois não está nos casos apropriados e há um número apósKey
e=
depois disso -
s/= .*/= new_value/
, do seu exemplo não há espaço após=
, mas sua substituição de padrão parece ter um espaço no arquivo real. Caso contrário, no que diz respeito ao seu exemplo dado, não há espaço após=
.