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!

janet
fuente

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

Radu Rădeanu
fuente
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.

Darius Žitkevičius
fuente
¿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.

Francisco luz
fuente
0

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

cat file1 file2 file3 > newfile
Atari911
fuente
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