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_formateeExemple de sortie :
01-04-2023Cela 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_formateeExemple de sortie :
Samedi, avril 01, 2023Cet 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_formateeExemple de sortie :
2023-04-01Cette 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.