awk 줄의 시작/끝에 서버 시간 삽입

awk 줄의 시작/끝에 서버 시간 삽입

printf에 대한 도움이 필요합니다.

현재 나는이 스크립트를 가지고 있습니다

awk '{c[$1"\t"$7]++}END{for(x in c)if (c[x]>10){printf "from %s (%d)\n",x,c[x]}}' /checkip.log >> bb.log

그것은 나에게 준다

from 120.230.xx.xxx /index (16)

from 120.231.xx.xxx /index (16)

from 120.236.xx.xxx /index (16)

등등.

checkip.log각 줄의 시작/끝에 현재 Linux 서버 시간(날짜 아님)을 인쇄하고 싶습니다 .

예를 들어

[07/Mar/2020:20:00:04 +0000] from 120.230.xx.xxx /index (16)

[07/Mar/2020:20:00:04 +0000] from 120.231.xx.xxx /index (16)

[07/Mar/2020:20:00:04 +0000] from 120.236.xx.xxx /index (16)

답변1

GNU awk가 있다면,

awk 'BEGIN{ d=strftime("[%d/%b/%Y:%H:%M:%S %z]") }
    {c[$1"\t"$7]++}
    END{for(x in c)if (c[x]>10){printf "%s from %s (%d)\n",d,x,c[x]}}' /checkip.log >> bb.log

GNU awk가 없으면 다음을 사용하십시오.

awk -vd="$(date '+[%d/%b/%Y:%H:%M:%S %z]')" '{c[$1"\t"$7]++}
    END{for(x in c)if (c[x]>10){printf "%s from %s (%d)\n",d,x,c[x]}}' /checkip.log >> bb.log

삽입할 문자열을 계산하기 위해 날짜를 가져옵니다.

표준 면책 조항, 일 월 이름 연도 시 분 초는 결과를 간단하게 정렬하려는 경우 좋지 않은 선택입니다. 연 월 일 시 분 초를 고려하십시오.

관련 정보