O problema é a saída de erros impressa em stderr , portanto, o comando sed
não pode capturar a entrada. A solução simples é: redirecionar o stderr para o stdout.
find . -name "openssl" 2>&1 | sed '/Permission denied/d;'
Comecei a usar sed
recentemente. Uma maneira prática que eu uso é ignorar linhas sem importância de um arquivo de log:
tail -f example.com-access.log | sed '/127.0.0.1/d;/ELB-/d;/408 0 "-" "-"/d;'
Mas quando tento usá-lo de maneira semelhante com find
, os resultados não são os esperados. Estou tentando ignorar qualquer linha que contenha "Permissão negada" assim:
find . -name "openssl" | sed '/Permission denied/d;'
No entanto, ainda recebo um monte de mensagens de "Permissão negada" em stdout
.
EDITAR
Como mencionado na resposta correta abaixo, as mensagens "Permissão negada" estão aparecendo em stderr
e NÃO stdout
.
Não sei por que você está tentando usar sed
para remover as mensagens permissão negada da saída de find
- a menos que você esteja tentando aprender como usar sed
.
Eu simplesmente rodaria isso:
find . -name "openssl" 2>/dev/null
Aqui, estou redirecionando stderr (descritor de arquivo 2 ) para /dev/null
(consulte man null
). Em outras palavras, 2>/dev/null
simplesmente descarta tudo escrito em stderr .