更新

更新
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

相关内容