Tengo en mi archivo package.json esta línea:
"version": "5.0.0", Y quiero reemplazar 5.0.0 con otro valor dinámico. Intenté así:
sed -i "s%5.0.0%5.1.1%g" "package.json"Pero no es bueno, porque no conozco el valor anterior que es 5.0.0. ¿Debo escribir una expresión regular aquí?
Cambia 5.6.7 a lo que quieras. Puede grep o find -exec para cambiar muchos archivos a la vez.
sed -i -E 's/"version": "([0-9]+(\.[0-9]+)+)",/"version": "5.6.7",/' package.jsonPodrías usar una referencia inversa :
sed -i -E 's/(^ *?"version". *)[0-9.]+(.*)/\1 5.1.1 \2/g'' El \1 garantiza que la cadena "versión" tiene el mismo formato que la entrada, y no es necesario volver a escribir esto.