¿Cómo puedo utilizar sed
para borrar completamente las líneas de un archivo de texto que contengan una determinada cadena de texto?
Estás leyendo una traducción autorizada de la pregunta
Delete a line containing a specific string using sed
planteada por A Clockwork Orange
en StackOverflow.
Respuestas
Para eliminar las líneas y mostrar el resultado por la salida estándar:
$ sed '/cadena de texto/d' ./archivo.txt
Para modificar directamente el archivo sin mostrar el resultado:
$ sed -i '/cadena de texto/d' ./archivo.txt
Por si lo necesitas, aquí tienes cómo conseguir el mismo resultado con otros comandos diferentes a sed
:
Con awk
:
$ awk '!/cadena de texto/' archivo.txt > temp && mv temp archivo.txt
Con Ruby:
$ ruby -i.bak -ne 'print if not /cadena de texto/' archivo.txt
Con un script de Bash:
while read -r line do [[ ! $s =~ 'cadena de texto' ]] && echo "$line" done <archivo.txt> o mv o archivo.txt
Con grep
:
$ grep -v "cadena de texto" archivo.txt > temp && mv temp archivo.txt
@librosweb
4 octubre 2014, 22:22