1

В сценарии я получаю предупреждение вида awk: warning: escape sequence \( treated as plain ( . Поскольку я хочу использовать вывод этого скрипта для выполнения каких-либо задач, я хочу, чтобы он выводил только результаты, а не предупреждения.

Я могу легко исправить это предупреждение, но есть ли способ избавиться от всех предупреждений в awk?

2 ответа2

2

Предупреждения и сообщения об ошибках обычно отправляются в stderr, и это похоже на случай awk , поэтому перенаправление stderr в /dev /null должно удерживать вас от просмотра этих сообщений, например так:

awk your_options your_file 2>/dev/null
0

Проблема с направлением stderr в /dev/null (как следует из ответа @garyjohn) состоит в том, что вы пропускаете ВСЕ ошибки, а не только это предупреждение, которое вы хотите подавить. Таким образом, вы пропустите что-то более важное, идущее неправильно. Плохая идея, в общем. НИКОГДА не делайте этого, если нет другой альтернативы. К счастью, в этом случае есть гораздо лучшая альтернатива.

Чистое решение проблемы ОП заключается в использовании " \\( " вместо " \( ". Это то, о чем awk/gawk пытается вас предупредить - это не просто нытье для развлечения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .