在Mac OS X上使用AWK分割文件

6

我正在尝试使用AWK根据特定分隔符拆分文件。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

我猜想这是OS X自带的awk和Linux上的mawk之间的一些差异。在print语句中去掉字符串连接符可以让awk程序在两个平台上运行,但我更喜欢保留前缀和后缀。如何编写一个awk程序,在分隔符上将文件分成多个编号部分,并在两个平台上运行?
1个回答

9
您可以使用一个变量来修复此脚本:
awk '/SEPARATOR/{n++}{filename = "part" n ".txt"; print >filename }' in.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接