Моя программа выводит в stderr и stdout . Я хочу использовать grep для "pattern" в stderr и stdout . И я хочу, чтобы остальные были отправлены в /dev/null .

Если я труба после перенаправления stderr : ./prog 2>/dev/null | grep "pattern" Я не получаю строки stderr которые содержат "pattern".

Если я передам перенаправление stderr : ./prog | grep "pattern" 2>/dev/null никто из stderr не перенаправляется в /dev/null

Спасибо за помощь.

2 ответа2

5

если вам не важно, происходит ли совпадение строк из stdout или stderr, просто объедините два потока, перенаправив stderr в stdout, а затем выполните grep:

$ your_program 2>&1 | grep "pattern"

пример работает в sh, bash, ksh, zsh. csh должен быть:

$ your_program |& grep "pattern"
1
./prog 2>&1 | grep pattern

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .