ログ行を読み取り、ログ行に特定の文字列が含まれている場合にエコーする方法

ログ行を読み取り、ログ行に特定の文字列が含まれている場合にエコーする方法

今私はこれを持っています:

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

おすすめ記事