JQ convertir hh min secs en sec

Résolu
bob737 Messages postés 157 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
  2. bob737 Messages postés 157 Statut Membre
     
    Merci beaucoup
    0
    1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
       
      Merci pour ton retour, bonne continuation :-)
      0