Обновлять

Обновлять
Oct 24 10:18:43 reliant3 sshd[67299]: Accepted password for root from 10.51.21.57 port 60097 ssh2

Я ищу слово пароль. Как только я его найду, я хочу найти все, что связано с этим sshd[67299]числом, и распечатать это.

решение1

$ 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

(отбросить все, кроме того, что в скобках).

решение2

Это должно вам подойти.

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

grep password my_log.txtполучает все строки, содержащие пароль.

sed 's/.*sshd\[\(.*\)\].*/\1/'находит символ []«» после него sshdи получает PID внутри него.

Вы не указали этого в своем вопросе, но вы также можете передать это, чтобы sort -uотфильтровать дубликаты.

Обновлять

Хотя, на мой взгляд, это менее читабельно, вы могли бы сделать все это в одной sedстроке.

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

Связанный контент