2011-11-02 52 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