Как перенаправить часть 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

Вы должны видеть только строки, содержащие "шаблон"

Другие вопросы по тегам