Kombinieren Sie mehrere Textdateien zu einer Datei

10

Ich verwende den Unix- prBefehl, um mehrere Textdateien in einer Textdatei zu kombinieren:

pr -F *files > newfile

Jede Datei hat eine andere Länge und eine andere Anzahl von Zeilen. Ich bin größtenteils mit dem Ergebnis zufrieden. Ich finde es gut, dass es den Namen der ursprünglichen Textdatei gefolgt vom Inhalt dieser Datei enthält. Ich möchte jedoch die Leerzeilen zwischen dem Namen der ursprünglichen Textdatei und ihrem Inhalt entfernen. Ich möchte nur Leerzeilen zwischen den verschiedenen Textdateien, um sie voneinander zu trennen. Außerdem wird das Zeichen ^Lnach dem Inhalt jeder Textdatei gedruckt , und ich möchte dieses Zeichen entfernen.

Jede eingelesene Datei erhält außerdem eine Seitenzahl. Nur eine Datei ist länger als die Standardeinstellung mit 66 Zeilen. Diese Datei wird in zwei "Seiten" aufgeteilt und in zwei Abschnitte unterteilt, die durch Leerzeilen getrennt sind. Ist es möglich, diesen Text fortlaufend einzuschreiben, ohne ihn zu teilen?

Vielen Dank für jede Hilfe!

Janet
quelle

Antworten:

9

Sie können das AWK-Dienstprogramm verwenden:

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

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

Radu Rădeanu
quelle
Vielen Dank für Ihren Vorschlag. -T wird jedoch nicht erkannt. Ich arbeite an Mac OS X, wenn das wichtig ist.
Janet
Leider erstellt -t den gleichen Dateityp wie cat, keine Unterbrechung zwischen eingelesenen Textdateien.
Janet
Danke Radu. das bringt mir fast das was ich will! Entschuldigung, mir ist jetzt klar, dass ich am falschen Ort poste, da ich die Benachrichtigung sehe, dass ich nicht zum Thema gehöre. Ich danke Ihnen für Ihre Hilfe!
Janet
12

So haben Sie leere Zeilen zwischen Dateien:

cat file1 newline file2 newline file3 > newfile

Wobei 'newline' eine Datei mit einer leeren Zeile ist.

Darius Žitkevičius
quelle
Können Sie klären, wie die Datei erstellt wird newline? Einige Texteditoren hängen automatisch ein Zeilenendezeichen an die letzte Zeile an, andere nicht. Einige Benutzer haben möglicherweise Probleme beim Erstellen dieser Datei. Anders ausgedrückt: Hat eine Datei mit der Länge Null Nullzeilen oder eine Zeile?
Eliah Kagan
vim newline in vim: wq Das ist es.
Darius Žitkevičius
Solange ich sehe, setzt "cat" automatisch eine neue Zeile zwischen jede Datei.
Myuce
1
for file in *.txt; do (cat "${file}"; echo) >> concatenated.txt; done

Mit dem obigen Befehl wird der Inhalt der eacb txt-Datei an concatenated.txt angehängt, wobei eine neue Zeile dazwischen hinzugefügt wird.

Francisco Luz
quelle
0

Sie können verwenden cat, um den Text von Dateien in eine Datei zu kopieren mit:

cat file1 file2 file3 > newfile
Atari911
quelle
2
Erfüllt leider catkeine der anderen Anforderungen.
Ignacio Vazquez-Abrams
1
ja Dankeschön. cat listet jedoch nur den Inhalt jeder Datei ohne den ursprünglichen Namen der Textdatei auf und listet auch den Inhalt jeder Datei nacheinander auf, ohne dazwischen zu brechen. Ich brauche mindestens 1 leere Zeile zwischen dem Inhalt jeder Textdatei in der neuen großen Datei.
Janet