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

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

단순히 결과를 정렬하려는 경우 표준 면책조항인 "일, 월, 이름, 연도, 시, 분, 초"는 잘못된 선택입니다. 연도, 월, 일, 시, 분, 초를 고려하십시오.

관련 정보