Saltar al contenido

Conversión de fechas en AWK

Solución:

Si está usando gawk, no necesita el externo date que puede ser costoso llamar repetidamente:

awk '
BEGIN{
   m=split("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",d,"|")
   for(o=1;o<=m;o++){
      months[d[o]]=sprintf("%02d",o)
    }
format = "%m/%d/%Y %H:%M"
}
{
split($4,time,":")
date = (strftime("%Y") " " months[$2] " " $3 " " time[1] " " time[2] " 0")
print strftime(format, mktime(date))
}'

Gracias a ghostdog74 para la matriz de meses de esta respuesta.

puedes probar esto. Suponiendo que solo la fecha que especificó está en el archivo

awk '
{
    cmd ="date "+%m/%d/%Y %H:%M" -d ""$1" "$2" "$3" "$4"""
    cmd | getline var
    print var
    close(cmd)
}' file

producción

$ ./shell.sh
01/02/2010 18:23

y si no está usando herramientas GNU, como si está en Solaris, por ejemplo, use nawk

nawk 'BEGIN{
   m=split("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",d,"|")
   for(o=1;o<=m;o++){
      months[d[o]]=sprintf("%02d",o)
   }
   cmd="date +%Y"
   cmd|getline yr
   close(cmd)
}
{
    day=$3
    mth=months[$2]
    print mth"https://foroayuda.es/"day"https://foroayuda.es/"yr" "$4
} ' file
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *