2011-04-07 17 views

Respuesta

28

Esto debe hacerlo:

sed -e s/deletethis//g -i * 
sed -e "s/deletethis//g" -i.backup * 
sed -e "s/deletethis//g" -i .backup * 

que reemplazará todas las apariciones de "deletethis" con "" (nada) en todos los archivos (*), la edición de ellos en su lugar.

En la segunda forma el patrón se pueden editar un poco más seguro, y hace copias de seguridad de los archivos modificados, sufijando con ".backup".

La tercera forma es la forma en algunas versiones de sed como él. (Por ejemplo, Mac OS X)

man sed para más información.

+0

Creo que es por lo general una mejor idea de citar la expresión y, además, me gustaría señalar la sintaxis '-i.bak' donde crea una sed archivo de copia de seguridad con la extensión dada. Es decir. podría ser '-i.backup', también ... – 0xC0000022L

+1

@STATUS tienes razón, algunas versiones de sed realmente necesitan el sufijo. – mvds

+2

Esto no funciona. Esto elimina la cadena. Deseo eliminar la línea que contiene esta cadena – virtue

16
sed -i '/pattern/d' file 

Use 'd' para eliminar una línea. Esto funciona al menos con GNU-Sed.

Si su Sed no tiene la opción, para cambiar un archivo en su lugar, tal vez se puede utilizar un archivo intermedio, para almacenar la modificación:

sed '/pattern/d' file > tmpfile && mv tmpfile file 

Escribir directamente a la fuente por lo general no lo hace trabajo: sed '/pattern/d' file > file así que haga una copia antes de probar, si lo duda.

+1

Esta es la respuesta correcta a la pregunta original. Por razones de seguridad, puede usar '-i.bak' en lugar de' -i' para crear una copia de seguridad de su archivo original. – Mike

+0

Esto no está trabajando en 'sed' de busybox, se elimina toda la línea no la cadena, @mvds respuesta funciona – danigosa

+0

@danigosa: Bueno, es por eso MVDS respuesta es incorrecta, la pregunta era, para eliminar una línea, no la cadena. Lea la pregunta, lea el comentario de virtud en la respuesta más votada. –

0

Prueba el vim vías:

ex -s +"g/foo/d" -cwq file.txt 
Cuestiones relacionadas