现在我有这个:
while read p ; do
if ("$p | awk 'print $5'") == "sshd" && ("$p | awk 'print $6'") == "Connection";do
echo("$p")
done
done < /log.txt
我想要检测的文本是“[”之前的“sshd”和字符串“:”之后的“Connection”。
日志行如下所示:
Sep 21 05:45:55 MY_MACHINE sshd[16251]: Connection from 76.127.218.159 port 41950
答案1
这可以简单地用一个单一的awk
命令:
awk '$5 ~ /^sshd/ && $6 == "Connection"' log.txt
答案2
你可以只使用awk
:
awk '$5 ~ /^sshd\[\[0-9]+\]:$/ && $6 ~ /^Connection$/{print}' /log.txt