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