Bash: cdrecord und grep bzw sed

Guten Abend,

von der Ausgabe von cdrecord interessieren mich nur bestimmte Zeilen. Wenn ich der Ausgabe aber mit grep oder sed zu Leibe rücke bleiben trotzdem immer die ersten drei Zeilen stehen:
Linux sg driver version: 3.5.27
No target specified, trying to find one…
Using dev=1000,1,0.

Wie bekomme ich die Weg?

Vielen Dank und viele Grüße,
Josef

Hallo Josef,
schreibt cdrecord vielleicht nicht nur auf STDOUT, sondern auch auf STDERR? Solltest du mal ausprobieren, indem du

cdrecord [deine Parameter] \>output.log 2\>output.err 

startest. Ich vermute, deine „überflüssigen“ Zeilen werden genau in output.err auftauchen (und du kann sie dann mit 2>/dev/null entsorgen).

gruss
bernhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Guten Abend,

von der Ausgabe von cdrecord interessieren mich nur bestimmte
Zeilen. Wenn ich der Ausgabe aber mit grep oder sed zu Leibe
rücke bleiben trotzdem immer die ersten drei Zeilen stehen:
Linux sg driver version: 3.5.27
No target specified, trying to find one…
Using dev=1000,1,0.

Wie bekomme ich die Weg?

Vielen Dank und viele Grüße,
Josef

Hallo Josef,
schreibt cdrecord vielleicht nicht nur auf STDOUT, sondern
auch auf STDERR? Solltest du mal ausprobieren, indem du

cdrecord [deine Parameter] >output.log 2>output.err

startest. Ich vermute, deine „überflüssigen“ Zeilen
werden genau in output.err auftauchen (und du kann sie dann
mit 2>/dev/null entsorgen).

gruss
bernhard

Klasse Bernharnd, vielen Dank.

Auf Bernhards Rat hin nutze ich eine temporäre Datei für STDOUT, die ich dann an grep übergebe. Funktioniert ganz gut, aber aus Interesse (und weil ich es eleganter finde):

Wie kann ich nur STDOUT (also ohne STERR) in eine pipe schicken?

Hi Josef,
per Pipe-Zeichen macht die Shell genau das, d.h. der STDOUT des einen Programms wird an den STDIN des nächsten Programms gehängt. Was das erste Programm auf STDERR ausgibt, wird nicht verändert und landet deswegen auf deiner Console. Da dich das aber nicht interessiert, wird dir

prog1 [hier deine parameter] 2\>/dev/null | grep "suchwas"

weiterhelfen.

gruss
bernhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Was das erste Programm auf STDERR ausgibt, wird nicht

verändert und landet deswegen auf deiner Console. Da dich das
aber nicht interessiert, wird dir

prog1 [hier deine
parameter] 2>/dev/null | grep „suchwas“

weiterhelfen.

verstehe, ich filtere STDERR raus und pipe dann nur STDIN. Großartig, vielen Dank.