Script shell
simo
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai un fichier qui contient les lignes ci-aprés :
nom1(famille1/X/famille2/Y/famille3/A|)
nom2(famille1/X/famille2/Y/famille3/B|)
nom1(famille1/X/famille5/Y/famille3/C|)
nom2(famille1/X/famille5/Y/famille3/D|)
J'ai besoin de récupérer tout ce qui entre parenthèses sous forme de paramètres en utilisant le shell unix.
Ex :
(famille1/X/famille2/Y/famille3/A|)
param1 : famille1
param2 : X
param3 : famille2
param4 : Y
param5 : famille2
param6 : A
Merci d'avance pour votre aide.
j'ai un fichier qui contient les lignes ci-aprés :
nom1(famille1/X/famille2/Y/famille3/A|)
nom2(famille1/X/famille2/Y/famille3/B|)
nom1(famille1/X/famille5/Y/famille3/C|)
nom2(famille1/X/famille5/Y/famille3/D|)
J'ai besoin de récupérer tout ce qui entre parenthèses sous forme de paramètres en utilisant le shell unix.
Ex :
(famille1/X/famille2/Y/famille3/A|)
param1 : famille1
param2 : X
param3 : famille2
param4 : Y
param5 : famille2
param6 : A
Merci d'avance pour votre aide.
Configuration: Windows XP Internet Explorer 7.0
9 réponses
-
Bonjour,
essaye d'utiliser la commande "cut" :
cut - famille1 - X > tempo --> ici tu récupère les champ famille1 et X dans le dossier tempo
mais ce n'est pas complet tu veux maintenant les afficher. Essaye avec read sur des valeurs que tu définies, tu les rappelles. -
je serais toi je mettrais le contenu du fichier dans une variable chaine de caractère et après je découperé la chaine de caractère:
par exemple un fichier texte qui contient 7 paramètre: (1/2/3/4/5/6/7)
#mettre la chaine de caractères dans une variable
variable=$(cat fichier.txt)
param1=${variable%/*} #6 fois pour récupérer que le param1 (boucle for)
param2=${variable%/*} #5 fois pour récupérer que le param1 et le 2
param2=${variable#*/} #1 fois pour avoir que le 2
param3=${variable%/*} #4 fois pour récupérer que le param1 et le 2
param3=${variable#*/} #2 fois pour avoir que le 2
.
.
. -
Salut,
Une piste :[trash] $ echo $var nom1(famille1/X/famille2/Y/famille3/A|) [trash] $ echo $var | sed 's#.*(\(.*\)|)#\1#;s#/# #g' famille1 X famille2 Y famille3 A [trash] $ set $(echo $var | sed 's#.*(\(.*\)|)#\1#;s#/# #g') [trash] $ echo " Param1 = $1 Param2 = $2 Param3 = $3 Param4 = $4 Param5 = $5 Param6 = $6" Param1 = famille1 Param2 = X Param3 = famille2 Param4 = Y Param5 = famille3 Param6 = A [trash] $
;-))
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
En fait, j'ai un petit problème avec le sed :(. Les expressions ci-dessous peuvent contenir du texte aprés le "|"
nom1(famille1/X/famille2/Y/famille3/A|dfd)
nom2(famille1/X/famille2/Y/famille3/B|fffff)
nom1(famille1/X/famille5/Y/famille3/C|)
nom2(famille1/X/famille5/Y/famille3/D|)
Le résultat devient :
Param1 = nom1(famille1
Param2 = X
Param3 = famille2
Param4 = Y
Param5 = famille3
Param6 = A|dfd
Merci pr votre aide :) -
sed 's#.*(\(.*\)|.*)#\1#;s#/# #g'
;-))
-
Bonjour jipycy,
E fait, j'ai le script suivant élaboré avec ton aide :
-------------------------------------------------------------------------------------------------------
while true
do
clear
for ligne in `cat $fichier2`; do
set $(echo $ligne | sed 's#.*(\(.*\)|.*)#\1#;s#/# #g')
echo ""
echo " "$i". famille1: "$2 "| famille2: "$4 "| famille3: "$6
i=`expr $i + 1`
done
echo "
Votre choix : \c choix"
read choix
case "$choix" in
"0" )
exit;;
"variable" ) echo "choix 1"
;;
"variable" ) echo "choix 2"
;;
etc...
esac
done
-----------------------------------------------------------------------------------------------
sachant que le fichier2 contient :
nom1(famille1/X/famille2/Y/famille3/A|dfd)
nom2(famille1/X/famille2/Y/famille3/B|fffff)
nom1(famille1/X/famille5/Y/famille3/C|)
nom2(famille1/X/famille5/Y/famille3/D|)
etc...
Je voudrai que le script affiche l'ensemble des familles contenues dans le fichier dynamiquement avec un numéroà savoir le $i et que l'uilisateur ait la possiblité de faire son choix (variable) parmi ceux affiché dynamiquement.
Merci d'avance. -
Inspires-toi de cette excellente réponse de jisisv... ;-))
-
$ set -A mon_tableau élément1 élément2 élément3 $ echo ${mon_tableau[1]} élément2 $ echo ${mon_tableau[0]} élément1 $ echo ${mon_tableau[*]} élément1 élément2 élément3 $ echo ${#mon_tableau[*]} 3 $;-))