Gibt es ein Dienstprogramm, das Dateien nach Zeilenumbruchsymbolen aufteilt? Wenn eine Datei beispielsweise die folgenden Zeilen enthält,
aa
bbb
cccc
Wenn ich es in drei Dateien aufteilen möchte, wäre die gewünschte Ausgabe:
aa
, bbb
Und cccc
(in 3 verschiedenen Dateien)
Ich habe den split
Befehl bereits überprüft, er schneidet Dateien nur entsprechend der Dateigröße, was nicht das ist, was ich will.
Wenn ich kein Dienstprogramm selbst geschrieben habe, gibt es ein Standardtool, das ich verwenden kann?
Antwort1
Sofern ich nichts übersehen habe, split
erfolgt die zeilenweise Aufteilung, wenn Sie -l
den Schalter verwenden:
-l, --lines=NUMBER
put NUMBER lines per output file
Also
split -l 1 inputfile
sollte tun, was Sie wollen.
Antwort2
awk '{print > $0".txt" }' inputfile
würde pro eindeutiger Zeile in der Eingabedatei eine Datei erstellen, die nach dem Inhalt dieser Zeilen benannt ist (mit einer Erweiterung). Beachten Sie jedoch, dass einige Implementierungen fehlschlagen .txt
, wenn das Limit gleichzeitig geöffneter Dateien erreicht ist .awk
Oder
awk '{f = "output_file." NR; print $0 > f; close(f)}' inputfile
Um nummerierte Ausgabedateien zu erhalten.
Antwort3
A=0
while IFS= read -r LINE ; do
printf '%s\n' "$LINE" > newfile$A
(( A++ ))
done < "$INPUTFILE"