Man kann bei diff
normalerweise nur einen der beiden Datei-Parameter durch ein „-“ ersetzen, um diese Daten vom Standard-Input zu lesen. Was aber, wenn man die Ausgaben von zwei Programmen vergleichen und man diese nicht in Dateien zwischenspeichern will?
Bei commandlinefu.com fand ich die Lösung:
diff <( cmd1 ) <( cmd2 )
Man kann also prima die Ausgabe von zwei Greps auf ps vergleichen, um die User zu finden, bei denen ein Programm nicht gestartet ist:
diff <( ps -ef | grep 'bin/anel' | sort | cut -c 1-8 ) \n <( ps -ef | grep 'script/start_aws' | sort | cut -c 1-8 )
Über einen Tweet bin ich gerade auf einen Artikel gestoßen, der die Hintergründe der hier verwendeten sog. „Process Substitution“ erläutert: https://medium.com/@joewalnes/handy-bash-feature-process-substitution-8eb6dce68133
Man kann dieses Verfahren auch dann einsetzen, wenn eigentlich ein Dateiname und nicht eine Eingabe über Std-In erwartet wird.