Script shell
simo
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
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.
A voir également:
- Script shell
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Script cmd - Guide
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.
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
.
.
.
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 :
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 :)
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 :)
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.
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.