2011-11-02 12 views
5

Estoy tratando de dividir un archivo usando AWK en un separador específico. El código awk se ve así:División de un archivo usando AWK en Mac OS X

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

este código funciona perfectamente en mis sistemas Linux. Pero cuando se ejecuta exactamente el mismo código en Mac OS X me sale el siguiente error:

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

Asumo que esto es algún tipo de diferencia entre el awk que se incluye con OS X y mawk desde Linux. La eliminación de la concatenación de cadenas en la impresión hace que el programa awk funcione en ambas plataformas, pero preferiría mantener el prefijo y surfix. ¿Cómo escribo un programa awk que divide un archivo en un separador en varias partes numeradas y funciona en ambas plataformas?

Respuesta

7

Puede solucionar este script mediante el uso de una variable:

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

Gracias, esto funciona. – pehrs