Quiero borrar una línea que contiene una cadena específica del archivo. ¿Cómo puedo hacer esto sin usar awk
? Traté de usar sed
pero no pude lograrlo.Buscar una cadena en un archivo y eliminarlo de este archivo de secuencias de comandos por Shell
Respuesta
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.
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.
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
Esto no está trabajando en 'sed' de busybox, se elimina toda la línea no la cadena, @mvds respuesta funciona – danigosa
@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. –
Prueba el vim vías:
ex -s +"g/foo/d" -cwq file.txt
- 1. buscar y reemplazar cadena en un archivo
- 2. Cómo llamar a una función en shell ¿Secuencias de comandos?
- 3. Extracción de los dos primeros caracteres de una cadena (Creación de secuencias de comandos de shell)
- 4. Buscar cadena en archivo de texto C
- 5. Tratando de crear un archivo y eliminarlo inmediatamente
- 6. Cómo leer un archivo .properties mediante secuencias de comandos por lotes
- 7. Buscar una cadena en un archivo y escribir las líneas coincidentes a otro archivo en Java
- 8. Directorio de secuencias de comandos en Fish shell
- 9. Shell script + escribir en el archivo de una cadena
- 10. Buscar y reemplazar en un archivo grande
- 11. Buscar y reemplazar en scripts de shell
- 12. Creación de secuencias de comandos del shell SQLite
- 13. $ * en secuencias de comandos bash
- 14. ¿Cómo comprobar si un archivo/dir se puede escribir en secuencias de comandos por lotes
- 15. Shell de comandos que empiezan por ">"
- 16. de secuencias de comandos de Java: importar una clase desde un archivo externo
- 17. Bash Shell Secuencias de comandos: qué lógica simple me falta
- 18. Acceder al archivo antes de eliminarlo
- 19. Cygwin ejecutando secuencia de comandos de un archivo por lotes?
- 20. xcode: buscar por archivo
- 21. Bloquear un archivo y eliminarlo sin soltar primero el candado
- 22. Buscar posición de una cadena en un archivo PDF y luego manipularla
- 23. PHP Buscar cadena en el archivo CSV
- 24. leer un archivo de texto y buscar una cadena en android
- 25. ¿Buscar una cadena para una subcadena en un archivo por lotes (Windows)?
- 26. "longitud promedio de las secuencias en un archivo fasta": ¿Se puede mejorar este código de Erlang?
- 27. cadena concat en una secuencia de comandos shell
- 28. Ejecutando un archivo por lotes en el shell git
- 29. ¿Por qué solo se ejecuta la primera línea de este archivo por lotes de Windows pero las tres líneas se ejecutan en un shell de comandos?
- 30. ¿Pueden las secuencias de comandos de ruby precompilarse en un archivo binario?
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
@STATUS tienes razón, algunas versiones de sed realmente necesitan el sufijo. – mvds
Esto no funciona. Esto elimina la cadena. Deseo eliminar la línea que contiene esta cadena – virtue