Stdout von einem Befehl an den Befehl stdin zweier Befehle in sh übergeben

280
Avineshwar

Der Befehl tee [using> ()] funktioniert nicht, da er in sh (bourne shell) nicht unterstützt wird.

Was ich versuche zu erreichen, ist das Senden der Ausgabe von "ifconfig -a" an zwei verschiedene Befehle.

Dies ist mein Befehl (der eindeutig nicht richtig ist):

 ifconfig -a | egrep -o '255\.[0-9]\.[0-9]\.[0-9]' | egrep -o 'ff[[:xdigit:]]' 

Ich habe andere Varianten dieses Befehls ausprobiert, einschließlich der Möglichkeit, tee zu verwenden, aber es schien aufgrund der Inkompatibilität mit sh nicht zu funktionieren. Es ist notwendig, auf der untersten Ebene des Konstrukts zu bleiben, und deshalb versuche ich, dass es funktioniert.

Ich weiß das beim Piping von egrep -o '255. [0-9] . [0-9] . [0-9]' Ich werde nichts anderes bekommen als beim Piping von egrep -o ' ff [[: xdigit:]] ' Ich bekomme meine benötigte Ausgabe (meine Netzmaske; das ist ein guter Regex für Netzmaske).

ff000000 fffff000 

Ich erwarte, dass es auf der ersten Pipe nichts gibt und auf der zweiten Pipe resultiert, aber dafür haben beide das stdout von "ifconfig -a".

Ich hoffe auf etwas Hilfe. Ich benutze / bin / sh unter FreeBSD (10.1; Amazon EC2)

0

1 Antwort auf die Frage

1
SΛLVΘ
ifconfig -a | egrep -o '255\.[0-9]\.[0-9]\.[0-9]|ff[[:xdigit:]]' 

Wenn Sie auch Ergebnisse in einer bestimmten Reihenfolge benötigen, lesen Sie sort

Sehr süß; auf den Punkt Sortieren ist im Moment kein Problem, ich werde versuchen, dies zu implementieren. Avineshwar vor 8 Jahren 0