2011-11-02 32 views
5

Tôi đang cố gắng tách tệp bằng AWK trên một dấu phân cách cụ thể. Mã awk trông giống như sau:Tách tệp bằng AWK trên Mac OS X

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

mã này hoạt động hoàn hảo trên hệ thống Linux của tôi. Nhưng khi chạy chính xác cùng mã trên Mac OS X tôi nhận được lỗi sau:

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

tôi cho rằng đây là một số loại chênh lệch giữa awk mà tàu với OS X và mawk từ Linux. Loại bỏ chuỗi nối trong bản in sẽ nhận được chương trình awk để làm việc trên cả hai nền tảng, nhưng tôi muốn giữ tiền tố và surfix. Làm cách nào để viết một chương trình awk tách một tệp trên một dấu phân cách thành nhiều phần được đánh số và hoạt động trên cả hai nền tảng?

Trả lời

7

Bạn có thể sửa chữa kịch bản này bằng cách sử dụng một biến:

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

Cảm ơn bạn, công trình này. – pehrs