Combina più file di testo in un unico file


10

Sto usando il prcomando unix per combinare più file di testo in un unico file di testo:

pr -F *files > newfile

Ogni file ha una lunghezza diversa, un diverso numero di righe. Sono per lo più contento del risultato, mi piace che includa il nome del file di testo originale seguito dal contenuto di quel file. Tuttavia, vorrei eliminare le righe vuote tra il nome del file di testo originale e il suo contenuto. Voglio solo righe vuote tra i diversi file di testo per separarli. Inoltre, stampa il carattere ^Ldopo il contenuto di ciascun file di testo e vorrei eliminarlo.

Ad ogni file letto viene anche assegnato un numero di 'pagina'. Solo un file è più lungo del valore predefinito di 66 righe. quel file finisce per essere sputato in 2 'pagine', ed è diviso in 2 sezioni divise da righe vuote. È possibile scrivere quel testo continuamente senza che sia diviso?

Grazie per tutto l'aiuto!

Risposte:


9

È possibile utilizzare l'utilità AWK:

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

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


grazie per il tuo suggerimento. tuttavia, -T non viene riconosciuto. sto lavorando su Mac OS X se questo è importante.
janet,

sfortunatamente, -t crea lo stesso tipo di file di Cat, nessuna interruzione tra i file di testo letti.
janet

grazie Radu. che mi dà quello che voglio! mi spiace, mi rendo conto ora che sto postando nel posto sbagliato, visto che vedo la notifica di essere fuori tema. ti ringrazio per l'aiuto!
janet,

12

Per avere righe vuote tra i file:

cat file1 newline file2 newline file3 > newfile

Dove "newline" è un file con riga vuota.


Puoi chiarire come fare il file newline? Alcuni editor di testo aggiungeranno automaticamente un carattere di fine riga all'ultima riga, mentre altri no, quindi alcune persone potrebbero riscontrare problemi nel rendere questo file correttamente. In altre parole: un file di lunghezza zero ha zero righe o una riga?
Eliah Kagan,

vim newline in vim: wq Questo è tutto.
Darius Žitkevičius,

Finché vedo, "cat" inserisce automaticamente una nuova riga tra ogni file.
myuce,

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

Quanto sopra aggiungerà il contenuto del file txt eacb in concatenated.txt aggiungendo una nuova riga tra di loro.


0

È possibile utilizzare catper scaricare il testo dei file in un file con:

cat file1 file2 file3 > newfile

2
Sfortunatamente catnon soddisfa nessuno degli altri requisiti.
Ignacio Vazquez-Abrams,

1
si Grazie. ma cat elenca semplicemente il contenuto di ciascun file senza il nome del file di testo originale e elenca anche il contenuto di ciascun file uno dopo l'altro senza interruzioni. ho bisogno di almeno 1 riga vuota tra i contenuti di ciascun file di testo nel nuovo file di grandi dimensioni.
janet,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.