Version complète: sur le forum Webmaster Hub : commande unix pour tester 2 valeurs
Webmaster Hub > Informatique & Internet > PC-Gyver > Linux, freebsd
adiloos98
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.
_________________
Kioob
Hello,

une manière simple de faire cela serait d'utiliser PHP 5 en ligne de commande. Un coup de SimpleXML et c'est réglé en quelques lignes.
rdd
Bonjour,

Voici qui devrait repondre a ton besoin :

CODE
#!/bin/bash

# Declaration des variables
# Fichier tampon pour classer les variables
ORDERED_FILE="ordered_file"
# Fichier de sortie
OUTPUT_FILE="/tmp/var"
# Balise de debut
BEGIN_TAG="<vc_entry>"
# Balise de fin
END_TAG="</vc_entry>"

# On cree un fichier temp en supprimant les balises
# et en ordonnant les variables
echo  `sed -e "/vc_entry/d" $1 | sort` > $ORDERED_FILE

# On ajoute les balises dans le fichier de sortie
echo "$BEGIN_TAG" > $OUTPUT_FILE

for i in $( more ordered_file )
do
# On recup le nom de la variable courante et la value
cur_name=$( echo $i | cut -f1 -d '=' )
cur_value=$( echo $i | cut -f2 -d '=' )
# Ce sont les memes variables on recup
if [ "$cur_name" == "$old_name" ]; then
        if [ $old_value -ge $cur_value ]; then
                cur_value=$old_value
                echo -n $old_name"="$old_value >> $OUTPUT_FILE
                echo -e >> $OUTPUT_FILE
        else
                echo -n $cur_name"="$cur_value >> $OUTPUT_FILE
                echo -e >> $OUTPUT_FILE
        fi
else
        old_value=$cur_value
        old_name=$cur_name
fi
done
# Et on ecrit la balise de fin
echo "$END_TAG" >> $OUTPUT_FILE

# On delete le fichier temp avec les variables triees
rm $ORDERED_FILE


Le script prend en parametre le fichier que tu veux trier et ecrit dans /tmp/var.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.