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.log
imprimir 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.