
В скрипте я получаю предупреждение вида awk: warning: escape sequence \( treated as plain (
. Поскольку я хочу использовать вывод этого скрипта для выполнения каких-либо действий, я хочу, чтобы он выводил только результаты, а не предупреждения.
Я могу легко исправить это предупреждение, но есть ли способ избавиться от всех предупреждений в awk?
решение1
Предупреждения и сообщения об ошибках обычно отправляются в stderr, и, похоже, это относится и к awk
, поэтому перенаправление stderr в /dev/null должно избавить вас от этих сообщений, например:
awk your_options your_file 2>/dev/null
решение2
Проблема с направлением stderr
( /dev/null
как предполагает ответ от @garyjohn) заключается в том, что вы пропускаетеВСЕошибки, а не только это предупреждение, которое вы хотели бы подавить. Так что вы пропустите что-то более существенное, что пойдет не так. Плохая идея, в общем.НИКОГДАделайте это, если только нет другой альтернативы. К счастью, в этом случае есть гораздо лучшая альтернатива.
Чистое решение проблемы OP — использовать " \\(
" вместо " \(
". Вот о чем awk/gawk пытается вас предупредить — это не просто нытье ради забавы.