2015-10-01 18 views
6

Ich versuche, eine große Datei basierend auf einem Muster zu teilen. Ich benutze awk Befehl dafür. Nach dem Erstellen einer bestimmten Anzahl von Dateien gibt es einen Fehler: Zu viele offene Dateien.Linux Shell-Skript awk Befehl zu viele offene Dateien

Befehl lautet:

awk '/pattern here/{i++}{print > "file"i}' /input file 

Kann mir jemand sagen, wie diese Dateien schließen? Ich habe versucht zu folgen, aber es gibt Fehler.

awk '/pattern here/{i++}{print > "file"i}' /input file | close("file"i) 

Vielen Dank.

+0

Sie benötigen die 'close' ** in ** awk nicht in einem Rohr auf den Ausgang laufen. Vielleicht möchten Sie auch in 'csplit' schauen. –

+0

Mögliches Duplikat von [Teilen Sie eine sehr große Datei in kleine Muster (bash)] (http://stackoverflow.com/questions/32228798/divide-yy-large-file-into-small-ones-following-pattern-bash)) –

Antwort

4

Vor dem Einschalten der nächsten Datei starten, schließen Sie die vorherige:

awk '/pattern here/{close("file"i); i++}{print > "file"i}' InputFile 
+0

Danke ... Datei vor dem Start der nächsten Datei zu schließen ... –

Verwandte Themen