JQ convertir hh min secs en sec [Résolu]

Signaler
Messages postés
119
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
7 juillet 2021
-
Messages postés
29982
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 juillet 2021
-
Bonjour,


une requete api dont je récupère le résultat par le jq suivant:
jq -r '"\(.objectName),\(.objectType),\(.slaName),\(.isOnDemand),\(.startTime),\(.endTime),\(.duration)"'


retourne
slucfrbw2110,VmwareVm,SLA_UAT,true,2021-06-29T15:10:51.389Z,2021-06-29T15:13:19.843Z,2 mins 28 secs


or j'aimerais récupérer le résultat sous le format

 slucfrbw2110,VmwareVm,SLA_UAT,true,2021-06-29T15:10:51.389Z,2021-06-29T15:13:19.843Z,88


et donc convertir dans le jq
2 mins 28 secs
en
88
.

Est-ce possible? si oui comment faire?

Merci de votre aide. ;-)

2 réponses

Messages postés
29982
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 juillet 2021
7 138
Bonjour,

Je pense que tu voulais dire 2 * 60 + 48 = 148.

Il suffit d'extraire avec
sed
le nombre de minutes et le nombre de secondes, faire le petit calcul par exemple avec
bc
ou l'opérateur
$(( ... ))
si tu es en bash, et réécrire le résultat.

#!/bin/bash
s=$(jq -r '"\(.objectName),\(.objectType),\(.slaName),\(.isOnDemand),\(.startTime),\(.endTime),\(.duration)"')
min=$(echo "$s" | sed -e 's/.*,\([0-9]*\) mins.*/\1/')
sec=$(echo "$s" | sed -e 's/.* \([0-9]*\) secs/\1/')
total=$(($min * 60 + $sec))
echo "$s" | sed -e "s/\(.*,\)\([0-9]* mins [0-9]* secs\)/\1$total/g"


Bonne chance
Messages postés
119
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
7 juillet 2021

Merci beaucoup
Messages postés
29982
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 juillet 2021
7 138
Merci pour ton retour, bonne continuation :-)