Tengo un grupo de archivos que están incompletos: la última línea falta un carácter EOL.Agregar líneas nuevas faltantes en varios archivos
¿Cuál es la forma más fácil de agregar la nueva línea, utilizando cualquier herramienta (¿quizás awk?)?
Tengo un grupo de archivos que están incompletos: la última línea falta un carácter EOL.Agregar líneas nuevas faltantes en varios archivos
¿Cuál es la forma más fácil de agregar la nueva línea, utilizando cualquier herramienta (¿quizás awk?)?
Para añadir una nueva línea al final de un archivo:
echo >>file
Para añadir una línea al final de cada archivo en el directorio actual:
for x in *; do echo >>"$x"; done
Si usted no sabe de antemano si cada archivo termina en una nueva línea, primero pruebe el último carácter. tail -c 1
imprime el último carácter de un archivo. Como la sustitución de comando trunca cualquier nueva línea final, $(tail -c 1 <file)
está vacío si el archivo está vacío o termina en una línea nueva, y no está vacío si el archivo termina en un carácter que no es de línea nueva.
for x in *; do if [ -n "$(tail -c 1 <"$x")" ]; then echo >>"$x"; fi; done
echo >> filename
probarlo antes de su uso masivo :)
Vim es grande para eso porque si no se abre un archivo en binary
modo, terminará automáticamente el archivo con la línea que termina detectado.
Así:
vim file -c 'wq'
debería funcionar, independientemente de si los archivos tienen Unix, Windows o Mac de gama de estilo de línea.
¿por qué 'tail -c 1' no devuelve nada si el archivo termina en una nueva línea? –
@MuMind: 'tail -c 1' siempre devuelve el último carácter, ya sea una nueva línea o no. Es la construcción de sustitución de comando del shell '$ (...)' que elimina las nuevas líneas finales. Entonces, si 'tail -c 1' genera solo un carácter que no sea de nueva línea, obtienes ese caracter. Si 'tail -c 1' solo genera un carácter de nueva línea, o nada (archivo vacío), no obtienes nada. – Gilles
Si no desea agregar la nueva línea a los archivos vacíos, use ... 'if [-s" $ x "-a -n" $ (tail -c 1 <"$ x") "]; then' ... –