Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Cómo se puede borrar con "sed" las líneas que contengan una determinada cadena

23 de marzo de 2011

¿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

#1

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 &amp;&amp; mv temp archivo.txt

@librosweb

4 octubre 2014, 22:22