Algumas maneiras:
-
Provavelmente, da maneira mais direta, correspondendo a chave apropriada por
/Key2/e, em seguida, substituindoValue2porValue4:$ 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
2por4):$ 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
Keyserá correspondido com/KEY=/, pois não está nos casos apropriados e há um número apósKeye=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=.