Estoy tratando de cambiar una sola palabra en una línea específica en un archivo, pero tengo algunos problemas para conectarlos todos juntos.
Básicamente, en una línea de mi archivo hay una palabra clave 'firmware_revision', y en esta línea (y solo en esta línea) quiero reemplazar la palabra 'prueba' con la palabra 'producción'.
Entonces puedo hacer esto:
grep 'firmware_revision' myfile.py | sed 's/test/production'
Esto seleccionará la línea que deseo y realizará la sustitución, pero no puedo encontrar la manera de colocar esta nueva línea en el archivo original para reemplazar la línea anterior. Obviamente no puedo simplemente redirigirlo de nuevo al archivo, entonces, ¿qué debo hacer?
Incluso si uso temporarios, al usar grep
para obtener solo la línea que necesito, pierdo todos los demás datos en el archivo, por lo que ya no puedo redirigir todo a un archivo temporal y luego reemplazar el original con la temperatura.
Editar: alguien solicitó más información
Digamos que tengo un archivo lleno de líneas como esta
[
('key_name1', str, 'value1', 'Description'),
('key_name2', str, 'value2', 'Description'),
('key_name3', str, 'value3', 'Description'),
('firmware_revision', str, 'my-firmware-name-test', 'Firmware revision name')
]
ahora quiero escribir un script (idealmente de una línea) que encontrará la línea que contiene 'firmware_revision', y cambia todas las instancias de la palabra 'prueba' en esa línea a 'producción'. La palabra 'prueba' podría estar en otros lugares en ese archivo y no quiero que se cambien. Para que quede claro, quiero cambiar la línea anterior a
('firmware_revision', str, 'my-firmware-name-production', 'Firmware revision name')
¿Cómo hago esto?
sed -i.bak '/firmware_revision/ s/test/production/' myfile.py
sed
es muy potente, puede realizar ambas funciones (grep
y sustitución) pero necesitaremos más información sobre cómo se ve la línea para ayudarlo.