gawk -v ff=${fileB} '
/^1017/ { print $0 >> ff; next; }
!(/^#/||/^1016/||/^1018/||/^1013/||/^1014/||/^1013/||/^1014/) {
f=substr($0,11,2)".csv"; print $0 >>"../../" f;
}
' ${csvfiles}
Die große Datei enthält verschiedene 20 Millionen für das Schreiben lines.and wir jede Zeile zu lesen, wenn es mit 1017 beginnen, werden sie in fileB gedruckt werden, unabhängig von Linien Inhalt , wenn es nicht startet Start mit der obigen Skip-Liste (1016,1013..
) wird es in eine Datei geschrieben, wo der Dateiname aus dem Zeileninhalt genommen wird. zum Beispiel die Zeile 1010,abcdefg,123453,343,3434,
in fg.csv geschrieben. wir tun Teilstring und nehmen das fg von der zweiten Spalte.AWK Leistung stimmen mehrere Dateien
Das Problem ist die Leistung ist wie 35k Zeilen pro Sekunde. Ist es möglich, es schneller zu machen?
sample input
Exclusion List 1016 1013 ..
Include line number 1010,1017...
1016,abcdefg,123453,343,3434,
1010,abcdefg,123453,343,3434,
1017,sdfghhj,123453,343,3434,
1034,zxczcvf,123453,343,3434,
1055,zxczcfg,123453,343,3434,
sample output
fileB.csv
1017,sdfghhj,123453,343,3434,
fg.csv
055,zxczcfg,123453,343,3434,
vf.csv
1034,zxczcvf,123453,343,3434,
Teilen Sie die große Datei, führen Sie Chunks parallel und 'cat' die Ergebnisse in eine Datei. – karakfa
[bearbeiten] Sie Ihre Frage und verwenden Sie die '' '' '' '' '' '' Taste, um Ihre Beispieleingabe/-ausgabe zu formatieren. Achten Sie auch darauf, welche Zahlen Sie ausschließen möchten, und stellen Sie sicher, dass Ihre Eingabe/Ausgabe und der Code dies widerspiegeln. –