Как перенаправить часть stderr и stdout в /dev/null
Моя программа выводит на stderr
а также stdout
, Я хочу grep для "шаблона" либо в stderr
а также stdout
, И я хочу, чтобы остальные были отправлены /dev/null
,
Если я труба после перенаправления stderr
: ./prog 2>/dev/null | grep "pattern"
Я не понимаю строки stderr
которые содержат "образец".
Если я трубу перед перенаправлением stderr
: ./prog | grep "pattern" 2>/dev/null
ни один из stderr
перенаправлен на /dev/null
Спасибо за помощь.
2 ответа
Решение
Если вам не важно, происходит ли совпадение строк из stdout или stderr, просто объедините два потока, перенаправив stderr в stdout, а затем выполните grep:
$ your_program 2>&1 | grep "pattern"
пример работает в sh, bash, ksh, zsh. csh должен быть:
$ your_program |& grep "pattern"
./prog 2>&1 | grep pattern
Вы должны видеть только строки, содержащие "шаблон"