2011-11-02 4 views
5

Próbuję podzielić plik przy użyciu AWK dla określonego separatora. Kod awk wygląda następująco:Dzielenie pliku przy użyciu AWK w systemie Mac OS X

awk '/SEPARATOR/{n++}{print > "part" n ".txt" }' in.txt 

ten kod działa doskonale na moich systemach Linux. Ale kiedy działa dokładnie ten sam kod w systemie Mac OS X pojawia się następujący błąd:

awk: syntax error at source line 1 
context is 
    /SEPARATOR/{n++}{print > "part" >>> n <<< ".txt" } 
awk: illegal statement at source line 1 

Zakładam, że jest to jakaś różnica między awk, który jest dostarczany z OS X i mawk z Linuksem. Usunięcie konkatenacji ciągów w druku powoduje, że program awk działa na obu platformach, ale wolałbym zachować przedrostek i surfix. Jak napisać program awk, który podzieli plik na separatorze na kilka numerowanych części i działa na obu platformach?

Odpowiedz

7

Można rozwiązać ten scenariusz przy użyciu zmiennej:

awk '/SEPARATOR/{n++}{filename = "part" n ".txt"; print >filename }' in.txt 
+0

Dziękuję, to działa. – pehrs