Quiero eliminar la primera línea de múltiples archivos de texto y reemplazarla con otra línea. ¿Hay alguna manera de hacer esto usando la terminal?
Sé cómo usar vim, ¿hay alguna forma de automatizarlo? Quiero evitar hacerlo manualmente (como al editar cada archivo individualmente).
Si es posible, me gustaría evitar instalar nuevas bibliotecas (especialmente para algo como lo que considero muy simple, pero podría estar equivocado).
¡Gracias por adelantado!
command-line
text-processing
TomTsagk
fuente
fuente

sedes en realidad lo que estaba buscando!Bueno, usándose a
vimsí mismo:Lo que esto hace:
setline (n, text), bueno, es una función que establece la líneanentext.calles necesario para llamar a funciones.bufdose usa para repetir un comando entre buffers (sin un rango, actúa en todos los buffers).wqguarda y sale del búfer. Necesitamos hacer esto antes de pasar al siguiente búfer, por lo que este comando se encadena alcallcomando usando|.-c cmdejecutacmdes un comando en modo comando después de cargar el primer búfer.Nesactiva el modo no compatible, silencioso y ex, que es mejor para el procesamiento no interactivo.Beneficios:
setlinecontenido del texto puede ser cualquier cosa - una&en unsedtexto de reemplazo puede tener efectos no deseados.fuente
sedParece mucho más fácil de usar, ¡pero es realmente increíble quevimpueda hacer lo mismo! ¡Muchas gracias por tu respuesta!bufdo). Considere que ya tiene los archivos abiertos y ... Y para mostrar una alternativa1s/foo/bar/.Algunas otras opciones:
awk(necesita una versión relativamente nueva de GNUawk)Perl / shell
Shell / coreutils
fuente
Este script hará lo que solicitó, colocando los archivos modificados en un nuevo directorio sin cambiar realmente los originales.
fuente
Utilizando
gawkEjemplo
fuente
jEdit: Lo uso para buscar y reemplazar en masa. Es potente con la capacidad de usar RegEx - Expresiones regulares. Puede operar en archivos dentro de un directorio, especificar extensiones de archivo, por ejemplo, ".html", etc. Y puede ver la configuración regional del cambio de candidato en contexto, en una GUI. jEdit es genial.
jEdit está disponible a través del centro de software de Ubuntu.
fuente
Los comandos tail y cat harían esto fácilmente:
Envuelva esos en un bucle adecuado y tal vez use un archivo temporal adecuado y justo en lugar de un nombre de archivo temporal codificado. Creo que bash y otros shells tienen una sintaxis para crear archivos temporales.
La opción -n de tail tiene dos interpretaciones dependiendo de si el argumento tiene un signo más. Si tiene un signo más, significa mostrar la cola del archivo comenzando en el número de línea dado. De lo contrario, el número es el número de líneas, incluida la última línea, que se supone que debe generar esa cola.
fuente