#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