Analyser une date depuis une chaîne de caractères

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.