로그 줄을 읽고 로그 줄에 특정 문자열이 포함된 경우 에코하는 방법

로그 줄을 읽고 로그 줄에 특정 문자열이 포함된 경우 에코하는 방법

이제 나는 이것을 가지고 있습니다 :

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

관련 정보