Aller au contenu

Sujets conseillés

Posté

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.

_________________

  • 2 semaines plus tard...
Posté

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.

Posté (modifié)

Bonjour,

Voici qui devrait repondre a ton besoin :

#!/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.

Modifié par rdd

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...