Teilen Sie die Datei in mehrere kleine Dateien auf, die durch das Zeilenumbruchsymbol voneinander getrennt sind


13

Gibt es ein Dienstprogramm, das Dateien nach Zeilenumbrüchen aufteilt? zB wenn eine Datei die folgenden Zeilen enthält,

aa
bbb
cccc

Wenn ich es in 3 Dateien aufteilen möchte, wäre die gewünschte Ausgabe:

aa, bbbUnd cccc(in 3 verschiedenen Dateien)

Ich habe den splitBefehl bereits geprüft , er schneidet nur Dateien nach Dateigröße, nicht was ich will.

Wenn ich selbst kein Hilfsprogramm geschrieben habe, gibt es ein Standardwerkzeug, das ich verwenden kann?


was soll der Dateiname sein?
Rahul Patil

Möchten Sie eine Datei für jede Zeile erstellen? Ich habe recht ?
Rahul Patil

Antworten:


14

Wenn mir nichts fehlt, splitwird bei Verwendung von -lswitch die Zeile aufgeteilt :

   -l, --lines=NUMBER
          put NUMBER lines per output file

so

split -l 1 inputfile

sollte tun, was du willst.


4
awk '{print > $0".txt" }'  inputfile

würde eine Datei pro eindeutiger Zeile in der Eingabedatei erstellen, die nach dem Inhalt dieser Zeilen benannt ist (mit einer .txtErweiterung). Beachten Sie jedoch, dass einige awkImplementierungen fehlschlagen , wenn das Limit für gleichzeitig geöffnete Dateien erreicht ist .

Oder

awk '{f = "output_file." NR; print $0 > f; close(f)}' inputfile

Ausgabe-Dateien nummeriert zu haben.


Möglicherweise möchten Sie die Ausgabedatei nach dem Schreiben schließen (), da sonst bei den meisten awk-Implementierungen die maximale Anzahl offener Dateien überschritten wird.
Stéphane Chazelas

Weißt du das nicht? Kannst du das für mich tun? danke ..
Rahul Patil

3
A=0
while IFS= read -r LINE ; do
  printf '%s\n' "$LINE" > newfile$A
  (( A++ ))
done < "$INPUTFILE"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.