awk inserta la hora del servidor al principio/final de la línea

awk inserta la hora del servidor al principio/final de la línea

Necesito ayuda con printf.

Actualmente tengo este script

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

Me da

from 120.230.xx.xxx /index (16)

from 120.231.xx.xxx /index (16)

from 120.236.xx.xxx /index (16)

etcétera.

Me gustaría checkip.logimprimir la hora actual de mi servidor Linux (no la fecha de ) al principio/final de cada línea.

Por ejemplo

[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)

Respuesta1

Si tienes GNU awk, entonces

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

Si no tienes GNU awk entonces usa

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

para obtener la fecha para calcular la cadena a insertar.

Descargo de responsabilidad estándar, día mes nombre año hora minuto segundo es una mala elección si alguna vez desea ordenar los resultados de manera simple. Considere año mes día hora minuto segundo.

información relacionada