MAC OS Awk - синтаксическая ошибка при генерации файлов с переменной - PullRequest
0 голосов
/ 12 октября 2018

Следующая команда берет файл temp_practice.txt и разделяет его на несколько файлов temp_output_1.txt, temp_output_2.txt и т. Д. на основе критериев $ 5~ "?"

awk -vn = 1 '{print> "temp_output_" n ".txt"} $ 5 ~ "?"{n ++} 'temp_practice.txt

В Ubuntu он работает очень плавно, и я получаю именно то, что хочу.Однако, когда я пытаюсь выполнить ту же команду на Mac, я получаю следующую синтаксическую ошибку:

awk: syntax error at source line 1
context is
{print > "temp_output_" >>>  n <<<  ".txt"} $5~"?" {n++}
awk: illegal statement at source line 1

Кажется, что есть синтаксическая ошибка с переменной n, которая генерирует имя файла.Я знаю, что между awk в Linux и Mac есть различия, но я не могу найти информацию об этой конкретной проблеме.Нужно ли использовать другую команду или просто добавить что-то в существующую строку?

1 Ответ

0 голосов
/ 12 октября 2018

Я уже говорил вам об этой проблеме ранее .Ваша следующая проблема не связана с той, о которой ваш вопрос.? является мета-символом регулярного выражения, означающим zero-or-one repetitions of the preceding expression, но посмотрите на свое регулярное выражение /?/ - у вас нет предыдущего выражения.Таким образом, некоторые awk могут рассматривать ? как литерал, а другие могут вызывать синтаксическую ошибку.Чтобы соответствовать буквальному значению ?, что, как я полагаю, вы пытаетесь сделать, это $5~/\?/ или $5~/[?]/ или index($5,"?") или, может быть, даже $5=="?", в зависимости от вашего ввода и требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...