JQ convertir hh min secs en sec

Résolu/Fermé
bob737 Messages postés 144 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mars 2024 - Modifié le 1 juil. 2021 à 13:27
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 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 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
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 144 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mars 2024
6 juil. 2021 à 19:23
Merci beaucoup
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
9 juil. 2021 à 01:35
Merci pour ton retour, bonne continuation :-)
0