2011-11-02 9 views
5

Sto provando a suddividere un file utilizzando AWK su un separatore specifico. Il codice awk è simile al seguente:Divisione di un file tramite AWK su Mac OS X

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

questo codice funziona perfettamente sui miei sistemi Linux. Ma quando si esegue lo stesso codice su Mac OS X ottengo il seguente errore:

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

suppongo che questo è una sorta di differenza tra l'awk fornito con OS X e mawk da Linux. Rimuovendo la concatenazione di stringhe nella stampa, il programma awk funziona su entrambe le piattaforme, ma preferirei mantenere il prefisso e il surfix. Come posso scrivere un programma awk che divide un file su un separatore in più parti numerate e funziona su entrambe le piattaforme?

risposta

7

È possibile risolvere questo script utilizzando una variabile:

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

Grazie, questo funziona. – pehrs