O utilitário sed
não suporta expressões regulares semelhantes a Perl.
Em vez disso, você pode usar
$ sed 's/KEY_2=[^,]*/KEY_2=new value/' file
KEY_1=value_1,KEY_2=new value,SOMEKEY=lastValue
ou
$ sed 's/\(KEY_2\)=[^,]*/=new value/' file
KEY_1=value_1,KEY_2=new value,SOMEKEY=lastValue
Ou, com awk
(sem usar expressões regulares e, em vez disso, usando correspondências de cadeia exata nas chaves, o que evita confusões quando você tem os dois KEY_2
e SOME_OTHER_KEY_2
):
$ awk -F, -v OFS=, '{ for (i = 1; i <= NF; ++i)
if (split($i, a, "=") == 2 && a[1] == "KEY_2") {
$i = "KEY_2=new value"
break
} } 1' file
KEY_1=value_1,KEY_2=new value,SOMEKEY=lastValue