
Ich möchte meine Datei in mehrere Dateien aufteilen.
Unten ist die Datei, die ich habe.
sort a # 3|4
sort a # 2|5
sort b # 1|2
sort b # 2|5
Ich möchte die Datei in die folgenden Teile aufteilen:
Datei1
sort a # 3|4
sort a # 2|5
Datei2
sort b # 1|2
sort b # 2|5
Wie Sie sehen, habe ich sie basierend auf der zweiten Spalte aufgeteilt. Da ich für Spalte zwei viele verschiedene Werte habe, nimmt das mühsame Aufteilen der Datei viel Zeit in Anspruch. Wie kann ich dieses Problem lösen?
Antwort1
AWK
Lösung:
awk '!a[$2]++{ fn="file"++c }{ print > fn }' inputfile
!a[$2]++
- Überprüfung auf eindeutige zweite Feldwerte,$2
indem dieser als Index des Arrays verwendet wirda
. Die Bedingung!a[$2]++
wirdtrue
nur beim ersten Vorkommen eines eindeutigen$2
Wertes ausgewertet.fn="file"++c
- ErstellenDateinamemit aufsteigendem Suffix++c
Ergebnisse anzeigen:
$ head file[12]
==> file1 <==
sort a # 3|4
sort a # 2|5
==> file2 <==
sort b # 1|2
sort b # 2|5
Antwort2
split -l 2 test
Dadurch werden zwei geteilte Dateien generiert. Ausgabe der geteilten Dateien:
$ cat xaa
sort a # 3|4
sort a # 2|5
$ cat xab
sort b # 1|2
sort b # 2|5