Comment utulisé awk dans mon script

karouma1 Messages postés 4 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai un scripte ou je doit prendre la duré comme un chiffre et non pas un caractère ,quelle la
façon ,mon script et le suivant:

ficin=$1
cut -c 37-48,188-198 $ficin | while read dure nd
do
if [[ $dure -gt 7200 ]]
then
echo $nb $nd >> FIC_Dure_SUP_2
fi
done

dure:la durée de communication
nd :numéros d'appel

merci d'anance.

4 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    On peut voir à quoi ressemble le contenu de ton fichier "ficin" s'il te plaît ?
    0
  2. karouma1 Messages postés 4 Statut Membre
     
    salut,

    le contenu de fichier est le suivant:

    WLL_BOUIRA 110051 SSC 020706834 20130620000032 079951

    6648

    00000115 00000006

    avec le premier numéros = nd (020706834)

    et le avant dernier =durée (000000115)

    merci
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Euh... là tes données sont sur plusieurs lignes, c'est normal ?

      Si on applique la commande "cut" sur cet exemple, voilà ce qu'il en retourne :
      $ cut -c 37-48,188-198 fichier 
      0620000032 0
      
      
      
      
      
      $

      Que veux-tu faire avec ça ? J'ai du mal à comprendre ;-\
      0
  3. karouma1 Messages postés 4 Statut Membre
     
    salut,

    j'ai utilisée la cut -c 37-48,188-198,pour récupéré les deux champs numéros d'appel est la durée d'appel puis faire la condition sur la durée,c'est à dire la condition (dure -gt 7200).

    merci
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Ben si tes champs récupérés sont bons, je ne vois pas où est le problème avec ton script, la preuve (j'ai simplifié avec $1 et $2, mais le test est le même) :

      $ cat foo.sh 
      #! /bin/bash
      
      if [[ $1 -gt 7200 ]]
      then
      echo $2 $2
      else
      echo "Durée plus petite"
      fi
      
      $ ./foo.sh 7000 15
      Durée plus petite
      
      $ ./foo.sh 7201 15
      15 15
      
      $ 
      0
  4. karouma1 Messages postés 4 Statut Membre
     
    salut ,

    quand j'ai exécute le script il ma fiche le message d'erreur suivant:

    /dure: [[: 020675954: value too great for base (error token is "020675954")

    que je doit faire
    merci
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      C'est à cause du "0" en début. Il te faut l'éliminer avent de faire le test.
      0