awk는 로그 파일 목록을 필터링합니다.

awk는 로그 파일 목록을 필터링합니다.

다음 명령을 사용하여 현재 날짜의 기간을 추출하고 다음과 같은 특정 메시지에 대해 grep을 시도했습니다.

awk -v date="$(date +%Y%m%d')" '$1="date" && $3>"180000" && $3<"192000"' /app/exploit/log/FILE_send.log | grep "End success file transfer /app/reception/FILENAME.dat to HOSTX"

하지만 첫 번째 날짜 열을 기준으로 필터링할 수는 없습니다. 다음은 awk 명령에서 변수를 제거하고 $1=20190405에 날짜를 지정할 때 awk 명령의 출력입니다.

1 - 180050 | INFO | FILE_SEND.sh | | FILENAME.dat | 1800498307000 | End success file transfer /app/reception/FILENAME.dat to HOSTX

로그의 내용은 다음과 같습니다.

20190405 - 180050 | INFO   | FILE_SEND.sh    |          | FILENAME.dat                    | 1800498307000 | End success file transfer /app/reception/FILENAME.dat to HOSTX

열이 1로 대체되는 이유를 알 수 없습니다. 오늘의 첫 번째 열을 필터링하는 방법

답변1

다음 명령을 사용할 수 있습니다.

awk -F'[-|]'  -v date="20190405" '$1 == date && $2>180000 && $2<192000' file_name | grep "End success file transfer /app/reception/FILENAME.dat to HOSTX"

명령의 출력은 awk다음과 같습니다.

 20190405 - 180050 | INFO   | FILE_SEND.sh    |          | FILENAME.dat                    | 1800498307000 | End success file transfer /app/reception/FILENAME.dat to HOSTX

가변 날짜 사용:

awk -F'[-|]'  -v date="$(date +%Y%m%d)" '$1 == date && $2>180000 && $2<192000' filename

관련 정보