如何读取日志行并在日志行包含特定字符串时进行回显

如何读取日志行并在日志行包含特定字符串时进行回显

现在我有这个:

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

相关内容