Como redirecionar uma parte de stderr e stdout para / dev / null

0

Meu programa envia para stderr e stdout . Eu quero grep para "padrão" ou em stderr e stdout . E eu quero que o resto seja enviado para /dev/null .

Se eu canalizar após redirecionar stderr : ./prog 2>/dev/null | grep "pattern" Eu não recebo as linhas de stderr que contêm "padrão".

Se eu canalizar antes de redirecionar stderr : ./prog | grep "pattern" 2>/dev/null nenhum de stderr é redirecionado para /dev/null

obrigado pela sua ajuda.

    
por Jav 18.12.2013 / 11:29

2 respostas

5

se você não se importa se a correspondência de seqüência de caracteres se origina de stdout ou stderr, então apenas mescle os dois fluxos redirecionando stderr para stdout e, em seguida, faça o grep:

$ your_program 2>&1 | grep "pattern"

o exemplo funciona em sh, bash, ksh, zsh. csh deve ser:

$ your_program |& grep "pattern"
    
por 18.12.2013 / 12:23
1
./prog 2>&1 | grep pattern

Você deve ver apenas as linhas que contêm "padrão"

    
por 18.12.2013 / 12:23