Teilen Sie die Datei in mehrere kleine Dateien auf und trennen Sie diese durch das Zeilenumbruchsymbol.

Teilen Sie die Datei in mehrere kleine Dateien auf und trennen Sie diese durch das Zeilenumbruchsymbol.

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, bbbUnd cccc(in 3 verschiedenen Dateien)

Ich habe den splitBefehl 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, spliterfolgt die zeilenweise Aufteilung, wenn Sie -lden 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"

verwandte Informationen