hallo
ich möchte ein text file in mehrere Einzel Dateien aufteilen, je nachdem
wieviele Doppelpunkte in einer Zeile sind. Also 4 DP soll nach 4.txt
kopiert werden, 5 DP nach 5.txt usw
ich hab mich mit meinem 0,2% awk Verständnis mal dran versucht und
natürlich kläglich gescheitert:
gawk '{n=awk -F ':' in.txt); print >> n".txt"}' in.txt > out.txt
Nimm Python, damit wird das warscheinlich einfacher gehen.
Die dümmstmögliche Art in bash ist ziemlich langsam:
1 | cat in.txt | while read s; do n=$(echo "$s" | grep -o ":" | wc -l); echo $s >> $n.txt; done; |
Ein langer Text (https://raw.githubusercontent.com/mxw/grmr/master/src/finaltests/bible.txt, 100k Zeilen) nach Anzahl der 'e' statt ':' sortiert hat damit 4.5 Minuten benötigt.
Böse Falle: echo $s verschluckt mehrfache Leerzeichen, echo "$s" nicht.
1 | gawk -F ':' -- '{print >> NF".txt"}' < in.txt
|
Andreas M. schrieb: >
1 | > gawk -F ':' -- '{print >> NF".txt"}' < in.txt
|
2 | > |
Nice, muss man auch erst drauf kommen. --> 0 1 2 3 4 7 .txt irgend was ist immer ;)
1 | awk -F ':' -- '( NF > 1 ) {print >> NF-1".txt"}' < text.txt
|
--> 1 2 3 6 .txt text.txt
1 | : |
2 | |
3 | :klklk |
4 | ouoiuoi |
5 | k;k;lk;l |
6 | |
7 | ::kjkjljlkjlkj |
8 | hjhkhkjh:: |
9 | jkjkjkkj::: |
10 | |
11 | ::: |
12 | ::: |
13 | ::: |
14 | |
15 | :::::: |
Nee, so einfach kommt man nicht davon. Mehrfaches vorkommen innerhalb einer Zeile ist auch noch zu berücksichtigen.... erstmal idF
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.