Teilen Sie eine Datei basierend auf dem Trennzeichen in mehrere Dateien auf
Ich habe eine Datei mit -|
als Trennzeichen nach jedem Abschnitt...müssen, erstellen Sie separate Dateien für jedes Kapitel mit unix.
Beispiel der input-Datei
wertretr
ewretrtret
1212132323
000232
-|
ereteertetet
232434234
erewesdfsfsfs
0234342343
-|
jdhg3875jdfsgfd
sjdhfdbfjds
347674657435
-|
Erwartete Ergebnis in Datei 1
wertretr
ewretrtret
1212132323
000232
-|
Erwartete Ergebnis in Datei 2
ereteertetet
232434234
erewesdfsfsfs
0234342343
-|
Erwartete Ergebnis in Datei 3
jdhg3875jdfsgfd
sjdhfdbfjds
347674657435
-|
InformationsquelleAutor der Frage user1499178 | 2012-07-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen one-liner, keine Programmierung. (außer die regexp usw.)
InformationsquelleAutor der Antwort ctrl-alt-delor
InformationsquelleAutor der Antwort William Pursell
Debian hat
csplit
aber ich weiß nicht, ob das allgemein für alle/die meisten/anderen Distributionen. Wenn nicht, obwohl, es sollte nicht allzu schwer sein, die Spur der Quelle und kompilieren Sie es...InformationsquelleAutor der Antwort twalberg
Löste ich ein etwas anderes problem, wo die Datei enthält eine Zeile mit dem Namen, wo der text, der folgt, sollte gehen. Dieser perl-code funktioniert der trick für mich:
InformationsquelleAutor der Antwort John David Smith
Können Sie auch awk. Ich bin nicht sehr vertraut mit awk, aber das folgende schien für mich arbeiten. Es generiert part1.txt, part2.txt, part3.txt und part4.txt. Bitte beachten Sie, dass die Letzte partn.txt Datei, die das erzeugt, ist leer. Ich bin mir nicht sicher, wie Sie Sie beheben, aber ich bin mir sicher, dass es getan werden könnte, mit ein wenig Feintuning. Irgendwelche Vorschläge, anyone?
awk_pattern Datei:
bash Befehl:
awk -f awk_pattern input.file
InformationsquelleAutor der Antwort rkyser
Hier ist eine Python 3-Skript, das spaltet eine Datei in mehrere Dateien-basierend auf einem mit dem Namen bereitgestellt durch die Trennzeichen. Beispiel-input file:
Hier ist das Skript:
Endlich hier ist, wie Sie es ausführen:
InformationsquelleAutor der Antwort ctrlc-root
und die formatierte version:
InformationsquelleAutor der Antwort mbonnin
Dies ist die Art von problem, das ich schrieb, Kontext-split für:
http://stromberg.dnsalias.org/~strombrg/context-split.html
InformationsquelleAutor der Antwort user1277476
Folgende Befehl funktioniert bei mir. Hoffe, es hilft.
bash
awk 'BEGIN{file = 0; filename = "output_" file ".txt"} /-|/{getline; file ++; filename = "output_" file ".txt"}{print $0 > filename}' input
InformationsquelleAutor der Antwort Thanh
Verwenden
csplit
wenn Sie es haben.Wenn Sie nicht, aber Sie haben Python... nicht verwenden Perl.
Vorausgesetzt, Ihr Beispiel-Datei heißt "
samplein
":Wenn Sie Python 3.5 oder niedriger, können Sie nicht verwenden, die f-Saiten:
und jetzt:
InformationsquelleAutor der Antwort Aaron Hall
Hier ist ein perl-code, der das Ding
InformationsquelleAutor der Antwort amaksr