
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