Aug 12 01:30:26 server.example.com sshd[19486]: Failed password for root from X.X.X.X port 50528 ssh2
Aug 12 01:30:26 server.example.com sshd[19486]: Received disconnect from X.X.X.X port 50528:11: Bye Bye [preauth]
Aug 12 01:30:26 server.example.com sshd[19486]: Disconnected from X.X.X.X port 50528 [preauth]
Aug 12 01:30:28 server.example.com sshd[19491]: Failed password for root from X.X.X.X port 59628 ssh2
我有一个从“/var/log/secure”中提取的示例 Linux SSH 日志文件。我想过滤 PID(本例中为 19491 和 19486)。我如何使用 bash 来实现这一点?
答案1
使用 awk:
awk -F '[][]' '{print $2}' /var/log/secure
-F '[][]'
将文件分隔符作为左大括号和右大括号$2
验证第二个字段。
答案2
这有点笨拙,但我希望有人可以发布一个较短的版本:我使用 sed 命令将“[”和“]”字符替换为空格,然后使用 awk 命令打印第 6 个字段
# cat /var/log/secure | sed 's/\[/ /g' | sed 's/\]/ /g' | awk ' {print $6}'
19486
19486
19486
19491