Aktualisieren

Aktualisieren
Oct 24 10:18:43 reliant3 sshd[67299]: Accepted password for root from 10.51.21.57 port 60097 ssh2

Ich suche nach dem Wort Passwort. Sobald ich es gefunden habe, möchte ich alles finden, was mit der sshd[67299]Nummer verknüpft ist, und es ausdrucken.

Antwort1

$ echo "Oct 24 10:18:43 reliant3 sshd[67299]: Accepted password for root from 10.51.21.57 port 60097 ss" | sed 's/.*\[\(.*\)\].*/\1/'
67299

(alles verwerfen, außer was in den Klammern steht).

Antwort2

Das sollte für Sie funktionieren

grep password my_log.txt | sed 's/.*sshd\[\(.*\)\].*/\1/'

grep password my_log.txtRuft alle Zeilen ab, die ein Passwort enthalten.

sed 's/.*sshd\[\(.*\)\].*/\1/'sucht nach dem []'s danach sshdund ruft die PID darin ab.

Sie haben dies in Ihrer Frage nicht angegeben, aber Sie könnten dies auch weiterleiten, um sort -uDuplikate herauszufiltern.

Aktualisieren

Obwohl es meiner Meinung nach weniger lesbar ist, könnten Sie auch alles in einer Zeile machen sed.

sed -e '/password/!d;s/.*sshd\[\(.*\)\].*/\1/' my_log.txt

verwandte Informationen