Как перенаправить часть 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
Вы должны видеть только строки, содержащие "шаблон"