Comment utulisé awk dans mon script

Fermé
karouma1 Messages postés 4 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 27 juin 2013 - 27 juin 2013 à 09:37
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 27 juin 2013 à 12:33
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.
A voir également:

4 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 juin 2013 à 09:51
Salut,

On peut voir à quoi ressemble le contenu de ton fichier "ficin" s'il te plaît ?
0
karouma1 Messages postés 4 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 27 juin 2013
27 juin 2013 à 10:36
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 juin 2013 à 10:42
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
karouma1 Messages postés 4 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 27 juin 2013
27 juin 2013 à 10:51
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 juin 2013 à 11:00
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
karouma1 Messages postés 4 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 27 juin 2013
27 juin 2013 à 12:20
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 juin 2013 à 12:33
C'est à cause du "0" en début. Il te faut l'éliminer avent de faire le test.
0