La mayoría de las soluciones en esta página no funcionan para mí (FreeBSD 10.3 amd64). solución OSX de Ian Will hace el trabajo casi siempre, pero es bastante difícil de seguir: - (
Hay una solución fácil que casi siempre funciona demasiado: (si $ f es el archivo):
sed -i '' -e '$ a \' "$ f"
Hay un gran problema con la solución sed:. nunca le da la oportunidad a sólo comprobar (y no añadir una nueva línea)
Ambas soluciones anteriores fallan para los archivos DOS. Creo que la solución portátil/de secuencias de comandos más es problemática. hábilmente el más fácil, que desarrollé yo mismo: -)
Aquí está el script sh elemental que combina file/unix2dos/tail. En producción, es probable que necesite usar "$ f" entre comillas a buscar a la salida de la cola (incrustado en la variable de shell llamado pasado) como \ "$ f \"
if file $f | grep 'ASCII text' > /dev/null; then
if file $f | grep 'CRLF' > /dev/null; then
type unix2dos > /dev/null || exit 1
dos2unix $f
last="`tail -c1 $f`"
[ -n "$last" ] && echo >> $f
unix2dos $f
else
last="`tail -c1 $f`"
[ -n "$last" ] && echo >> $f
fi
fi
Espero que esto ayude a alguien.
¿Está buscando simplemente una amplia pantalla de archivos desde una carpeta hacia abajo? Su pregunta no está muy clara en el ejemplo anterior. – James
¿Qué significa "txt normal"? ¿Estás hablando de archivos que terminan con una línea * en blanco * (\ n \ n) o solo archivos que finalizan con una nueva línea? Puede usar 'od -c filename' para imprimir una representación inequívoca del archivo. – jfs
Solo para enfatizar: newline es * no * lo mismo que * línea * en blanco. Una nueva línea es un carácter único: delimita lo que vemos como "líneas". Una línea en blanco es simplemente una "línea" sin caracteres, generalmente 2 caracteres consecutivos de línea nueva sin nada intermedio, o la primera línea de un archivo que comienza con una nueva línea. Algunas personas llaman a líneas que consisten solo en líneas en blanco del espacio en blanco, y reservan el término "línea vacía" para 2 caracteres consecutivos de línea nueva. Debe tener claro lo que quiere. – jw013