
Em um script, recebo alguns avisos do formulário awk: warning: escape sequence \( treated as plain (
. Como quero usar a saída desse script para fazer coisas, quero que ele gere apenas resultados e não avisos.
Posso corrigir esse aviso facilmente, mas existe uma maneira de me livrar de todos os avisos no awk?
Responder1
Avisos e mensagens de erro geralmente são enviados para stderr, e esse parece ser o caso de awk
, portanto, redirecionar stderr para /dev/null deve evitar que você veja essas mensagens, como esta:
awk your_options your_file 2>/dev/null
Responder2
O problema de direcionar stderr
para /dev/null
(conforme sugerido pela resposta de @garyjohn) é que você sente faltaTODOSerros, não apenas este aviso que você gostaria de suprimir. Assim, você perderá algo mais significativo que dê errado. Má ideia, em geral.NUNCAfaça isso a menos que não haja outra alternativa. Felizmente, neste caso, existe uma alternativa muito melhor.
A solução limpa para o problema do OP é usar " \\(
" em vez de " \(
". É sobre isso que o awk/gawk está tentando alertá-lo - não é apenas choramingar por diversão.