2010-10-06 5 views
1

Je crée un script bash Unix qui analyse le fichier journal du serveur Web et insère ces données dans la base de données. J'ai donc besoin de convertir timestamp qui a le format "05/Oct/2010: 07: 38: 40 +0400" en "AAAA-mm-jj".Spécifier le format de date d'entrée pour/bin/date

J'ai essayé d'utiliser/bin/date -d, mais il n'accepte pas le format donné. Je ne pouvais pas trouver un moyen de spécifier le format de date d'entrée pour cet outil. Est-il possible ou je devrais envisager une solution alternative?

Répondre

0
input_date="05/Oct/2010:07:38:40 +0400" 
better_date=`echo $input_date | sed -E 's|(..)/(...)/(.{4}).*|\1 \2 \3|'` 
date -I -d "$better_date" 
0

Vous devez:

date +%F 

En outre, cela semble fonctionner:

date -d "05 Oct 2010 07:38:40 +0400" +%F 

Vous devez utiliser des espaces comme séparateurs plutôt que / ou :.

+0

Cela va réellement mettre à jour l'heure du système. – Nippysaurus

+0

Voulez-vous dire que 'date -d' met à jour l'heure du système? Si c'est le cas, de quelle page 'man' parlez-vous? –

+0

Je pensais que c'était le cas ... mais en regardant la page man maintenant je ne vois pas pourquoi je pensais que cela mettrait à jour l'heure du système. Ignorer mon commentaire :-) – Nippysaurus