今私はこれを持っています:
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