2015-10-01 23 views
6

Próbuję podzielić duży plik na podstawie wzorca. Używam do tego polecenia awk. Po utworzeniu pewnej liczby plików daje błąd: Zbyt wiele otwartych plików.Komenda powłoki systemu Linux polecenia awk zbyt wiele otwartych plików

polecenia jest następująca:

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

Czy ktoś może mi powiedzieć jak zamknąć te pliki? Próbowałem podążać, ale daje błąd.

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

Dziękuję.

+0

Trzeba uruchomić 'close' ** ** w awk nie w rurze na wyjściu. Możesz również zajrzeć do 'csplit' zamiast tego. –

+0

Możliwy duplikat [Podziel bardzo duży plik na małe za wzorem (bash)] (http://stackoverflow.com/questions/32228798/divide-very-large-file-into-small-ones-following-pattern-bash) –

Odpowiedz

4

Przed rozpoczęciem następnego pliku, zamknąć poprzedni:

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

Dziękuję ... zamknięcie pliku przed uruchomieniem następnego pliku ... –