Разделение файла с помощью AWK в Mac OS X

#linux #macos #awk

#linux #macos #авк

Вопрос:

Я пытаюсь разделить файл с помощью 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
  

Я предполагаю, что это какая-то разница между awk, который поставляется с OS X, и mawk из Linux. Удаление конкатенации строк при печати позволяет программе awk работать на обеих платформах, но я бы предпочел сохранить префикс и surfix. Как мне написать awk-программу, которая разбивает файл на разделителе на несколько пронумерованных частей и работает на обеих платформах?

Ответ №1:

Вы можете исправить этот сценарий, используя переменную:

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