[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: nur stderr in eine pipe - wie?



Am 25.04.2014 08:18, schrieb Matthias Böttcher:
> ich möchte in der bash die Fehlerausgabe eines Kommandos (stderr bzw.
> fd 2) in eine pipe (zu grep) schicken. Die Standardausgabe soll
> _nicht_ in die pipe umgelenkt werden. Mir ist bewusst, dass dann nach
> grep alles, außer der Fehlerausgabe von grep selbst, auf der
> Standardausgabe landet. Mein Ziel ist, bestimmte definierte
> Fehlermeldungen mit grep zu filtern.

Ich hatte 2011 mal so eine ähnliche Frage nur das dann ein künstlicher-
Exitcode >0 gesetzt werden sollte, wenn dieser 0 ist aber etwas in
stderr erschienen ist.

http://lug-owl.de/pipermail/linux/2011-August/031846.html

Ich schätze du willst sowas (der erste filtert die stderr, der zweite die stdout und beide werden
restauriert:

exec 3<&1
deinBefehl 2>&1 >&3 |egrep -v 'deinstderrFilter' >2 3>&1 |egrep -v 'deinstdoutFilter'


user@host:~$ { { echo ja ; echo nein >&2 ;} 2>&1 >&3 |egrep -v 'ja' >&2 ;} 3>&1 |egrep -v ja
nein
user@host:~$ { { echo ja ; echo nein >&2 ;} 2>&1 >&3 |egrep -v 'ja' >&2 ;} 3>&1 |egrep -v nein
ja
nein
user@host:~$ { { echo ja ; echo nein >&2 ;} 2>&1 >&3 |egrep -v 'ja' >&2 ;} 3>&1 |egrep -v bla
ja
nein
user@host:~$ { { echo ja ; echo nein >&2 ;} 2>&1 >&3 |egrep -v 'nein' >&2 ;} 3>&1 |egrep -v ja
user@host:~$ { { echo ja ; echo nein >&2 ;} 2>&1 >&3 |egrep -v 'nein' >&2 ;} 3>&1 |egrep -v nein
ja
user@host:~$ { { echo ja ; echo nein >&2 ;} 2>&1 >&3 |egrep -v 'nein' >&2 ;} 3>&1 |egrep -v bla
ja
user@host:~$ { { echo ja ; echo nein >&2 ;} 2>&1 >&3 |egrep -v 'bla' >&2 ;} 3>&1 |egrep -v ja
nein
user@host:~$ { { echo ja ; echo nein >&2 ;} 2>&1 >&3 |egrep -v 'bla' >&2 ;} 3>&1 |egrep -v nein
ja
nein
user@host:~$ { { echo ja ; echo nein >&2 ;} 2>&1 >&3 |egrep -v 'bla' >&2 ;} 3>&1 |egrep -v bla
ja
nein

MfG...
Pierre



Reply to: