Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2008, 18h27   #1
Invité de passage
 
Inscription : mai 2008
Messages : 26
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 26
Points : 0
Points : 0
Par défaut commande unix pour tester 2 valeurs

bonjour
je cherche une commande unix qui me permettra de faire le test sur le contenu d'un variable dans un fichier
le fichier est:
<vc_entry>
airvci=1
dsmod=qam64
usmod=qam64
pri=2
epd=1
muxport=1
dspir=256
dscir=64
uspir=256
uscir=64
service-params
.......
.......
</vc_entry>
<vc_entry>
airvci=1
dsmod=qam64
usmod=qam64
pri=2
epd=1
muxport=1
dspir=32
dscir=32
uspir=32
uscir=32
service-params
.......
.......
</vc_entry>
cette commande sera capable de tester la valeur de (dspir) (256 et 32)
afin de choisir le plus importans(dspir=256) et l'envoyé dans un fichier /tmp/var.
merci beaucoup pour vous aides.
adiloos98 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 08h31   #2
Membre habitué
 
Inscription : février 2008
Messages : 159
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 159
Points : 125
Points : 125
Bonjour,

Je te conseille d'écrire un script qui cherche le mot voulu ( dspir ) dans le fichier avec grep.
Il t'affichera donc les deux lignes dans ton terminal ( si tu as que 2 dspir dans ton fichier ).

Ensuite, tu récupère leur valeur avec un tr et un cut ( avec tr tu définit le '=' comme séparateur ) et tu les compare avec un :
Code :
1
2
3
4
5
6
7
 
if [ $dspir1 -gt $dspir2 ]
then
          echo "$dspir1">>/tmp/var
else
          echo "$dspir1">>/tmp/var
fi
Ici, je considère que tes deux valeurs se nomment $dspir1 et $dspir2
Elverion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 09h08   #3
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Salut !

Tu peux utiliser awk.
grep dspdir | awk -F= '{if (max < $2) max=$2} END {print max;}' > /tmp/var

awk applique un traitement sur chaque ligne d'un stream, permet de parser une ligne selon un séparateur.
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 10h04   #4
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 499
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 499
Points : 9 681
Points : 9 681
Bonjour,

La combianison de grep et awk est effectivement une bonne solution.

Attention toutefois, il manque le nom de fichier pour grep :
Citation:
Envoyé par pacmann Voir le message
grep dspdir <mon_fichier> | awk -F= '{if (max < $2) max=$2} END {print max;}' > /tmp/var
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 10h17   #5
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Une variante :
Code :
1
2
 
sed -n 's/^dspir=//p' $file | sort -rn | head -1
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 10h20   #6
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Citation:
Envoyé par pacmann Voir le message
grep dspdir | awk -F= '{if (max < $2) max=$2} END {print max;}' > /tmp/var
On écrirait plutôt :
Code :
1
2
 
awk -F= '/dspir/ {if (max<$2) max=$2} END {print max;}' $file
L'utilisation de grep et awk en même temps est un peu redondante. Et au prix du fork()...
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h34.


 
 
 
 
Partenaires

Hébergement Web