JQ convertir hh min secs en sec

Résolu/Fermé
bob737
Messages postés
127
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
1 juillet 2022
- Modifié le 1 juil. 2021 à 13:27
mamiemando
Messages postés
31451
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 septembre 2022
- 9 juil. 2021 à 01:35
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

mamiemando
Messages postés
31451
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 septembre 2022
7 421
Modifié le 1 juil. 2021 à 14:14
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
1
bob737
Messages postés
127
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
1 juillet 2022

6 juil. 2021 à 19:23
Merci beaucoup
0
mamiemando
Messages postés
31451
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 septembre 2022
7 421
9 juil. 2021 à 01:35
Merci pour ton retour, bonne continuation :-)
0