Combina múltiples archivos de texto en un solo archivo


10

Estoy usando el prcomando unix para combinar varios archivos de texto en un solo archivo de texto:

pr -F *files > newfile

Cada archivo tiene una longitud diferente, un número diferente de líneas. Estoy muy contento con el resultado, me gusta que incluya el nombre del archivo de texto original seguido del contenido de ese archivo. Sin embargo, me gustaría eliminar las líneas en blanco entre el nombre del archivo de texto original y su contenido. Solo quiero líneas en blanco entre los diferentes archivos de texto para separar cada uno. Además, imprime el carácter ^Ldespués del contenido de cada archivo de texto, y me gustaría eliminar ese carácter.

Cada archivo leído también recibe un número de 'página'. Solo un archivo es más largo que el predeterminado de 66 líneas. ese archivo termina siendo escupido en 2 'páginas', y se divide en 2 secciones divididas por líneas en blanco. ¿Es posible escribir ese texto continuamente sin que se divida?

¡Gracias por cualquier ayuda!

Respuestas:


9

Puede usar la utilidad AWK:

awk 'FNR==1{print ""}{print}' *files > newfile

Fuente: /programming/1653063/how-do-i-include-a-blank-line-between-files-im-concatenating-with-cat


gracias por tu sugerencia sin embargo, -T no está siendo reconocido. Estoy trabajando en Mac OS X si eso importa.
janet

Por desgracia, -t crea el mismo tipo de archivo que el gato hace, sin descanso entre archivos de texto leído en.
Janet

gracias Radu eso casi me da lo que quiero! lo siento, ahora me doy cuenta de que estoy publicando en el lugar equivocado, ya que veo la notificación de estar fuera de tema. te agradezco por tu ayuda!
janet

12

Para tener líneas vacías entre archivos:

cat file1 newline file2 newline file3 > newfile

Donde 'nueva línea' es un archivo con línea vacía.


¿Puedes aclarar cómo hacer el archivo newline? Algunos edtiors de texto agregarán automáticamente un carácter de fin de línea a la última línea, y otros no, por lo que algunas personas pueden experimentar problemas para crear este archivo correctamente. Para decirlo de otra manera: ¿un archivo de longitud cero tiene cero líneas o una línea?
Eliah Kagan

vim nueva línea en vim: wq Eso es todo.
Darius Žitkevičius

Mientras veo, "cat" pone una nueva línea automáticamente entre cada archivo.
myuce

1
for file in *.txt; do (cat "${file}"; echo) >> concatenated.txt; done

Lo anterior agregará el contenido del archivo eacb txt en concatenated.txt agregando una nueva línea entre ellos.


0

Puede usar catpara volcar el texto de los archivos en un archivo con:

cat file1 file2 file3 > newfile

2
Lamentablemente catno cumple ninguno de los otros requisitos.
Ignacio Vazquez-Abrams

1
si, gracias. pero cat solo enumera el contenido de cada archivo sin el nombre del archivo de texto original y también enumera el contenido de cada archivo uno tras otro sin interrupción entre ellos. Necesito al menos 1 línea en blanco entre el contenido de cada archivo de texto en el nuevo archivo grande.
janet
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.