Bash:
Analyser une date depuis une chaîne de caractères
Comment faire :
Bash lui-même est assez limité en capacités de parsing de date directes, s’appuyant souvent sur des outils externes comme date
et awk
pour une manipulation plus sophistiquée. Voici comment vous pouvez analyser un format spécifique puis l’utiliser avec la commande date
pour le convertir ou effectuer des opérations.
Exemple 1 : Extraire une chaîne de date et la convertir dans un autre format.
Supposons que vous avez une date au format aaaa-mm-jj
et que vous souhaitez la convertir en jj-mm-aaaa
.
date_originale="2023-04-01"
date_formatee=$(date -d $date_originale '+%d-%m-%Y')
echo $date_formatee
Exemple de sortie :
01-04-2023
Cela utilise la commande date
avec l’option -d
pour spécifier la chaîne de date d’entrée, et +%d-%m-%Y
pour formater la sortie.
Exemple 2 : Utilisation de awk
pour analyser une date à partir d’une ligne de texte structuré et la convertir.
Supposant que vous avez une ligne de fichier journal :
2023-04-01 12:00:00 Utilisateur connecté
Vous pouvez extraire et convertir la partie date en utilisant awk
et date
.
ligne_journal="2023-04-01 12:00:00 Utilisateur connecté"
partie_date=$(echo $ligne_journal | awk '{print $1}')
date_formatee=$(date -d $partie_date "+%A, %B %d, %Y")
echo $date_formatee
Exemple de sortie :
Samedi, avril 01, 2023
Cet exemple utilise awk
pour diviser la ligne de journal et extraire la partie date ($1
représente le premier champ délimité par un espace), puis date
est utilisé pour le reformatage.
Utilisation d’outils tiers
Pour un parsing plus complexe ou lorsqu’on traite une grande variété de formats de date, les outils tiers comme dateutils
peuvent être très pratiques.
Exemple avec dateutils
:
Supposant que vous avez une chaîne de date dans un format non standard, par exemple, avril 01, 2023
.
date_originale="avril 01, 2023"
date_formatee=$(dateconv -i "%B %d, %Y" -f "%Y-%m-%d" <<< $date_originale)
echo $date_formatee
Exemple de sortie :
2023-04-01
Cette commande utilise dateconv
de dateutils
, spécifiant le format d’entrée avec -i
et le format de sortie souhaité avec -f
. dateutils
prend en charge une vaste gamme de formats de date et d’heure, rendant cet outil très polyvalent pour les tâches de parsing de date dans les scripts Bash.