2011-11-02 53 views
5

我想在特定分隔符上使用AWK分割文件。 awk代码如下所示:在Mac OS X上使用AWK分割文件

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

此代码在我的Linux系统上完美工作。但是,在Mac OS X完全相同运行相同的代码时,我得到以下错误:

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

我认为这是某种形式的AWK之间的差异附带OS X和mawk从Linux操作系统。在打印中删除字符串连接可以让awk程序在两个平台上工作,但我更愿意保留前缀和表达式。我如何编写一个awk程序,将分隔符上的文件分割成多个编号的部分,并在两个平台上工作?

回答

7

您可以通过使用一个变量解决这个脚本:

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

谢谢你,这个工程。 – pehrs