El comando
grep "foo" myfile.txt
imprime todas las líneas coincidentes en mi archivo.
Ahora quiero reemplazar la línea completa con otra cadena. ¿Cómo puedo hacer eso?
El comando
grep "foo" myfile.txt
imprime todas las líneas coincidentes en mi archivo.
Ahora quiero reemplazar la línea completa con otra cadena. ¿Cómo puedo hacer eso?
Respuestas:
Si está haciendo coincidir una subcadena de toda la línea, puede usar el scomando sed con una expresión regular para limpiar el resto de la línea:
sed -i 's/^.*foo.*$/another string/' myfile.txt
o use el ccomando para reemplazar la línea coincidente de una vez:
sed -i '/foo/ { c \
another string
}' myfile.txt
Si no desea escribir comandos multilínea en el indicador, puede colocarlo en un script:
$ cat foo.sed
/foo/ { c \
another string
}
$ sed -i -f foo.sed myfile.txt
}'esté en una línea separada de another string: el reemplazo es todo en esa segunda línea, incluso }si la coloca allí.