[Scrip shell] Help var_i=ligne_i d'un fichier
Résolu
Obi_wan31
Messages postés
13
Statut
Membre
-
Obi_wan31 Messages postés 13 Statut Membre -
Obi_wan31 Messages postés 13 Statut Membre -
Bonjours grands maîtres du script shell,
J'ai besoin de vos lumieres pour ecrire un script shell somme toute assez bête. Je voudras affecter à des variables chaque lignes d'un fichier.
Fichier res.txt
>cat res.txt
albert
bertrand
jose
paul
J'aimerais avoir :
var_1=albert
var_2=bertrand
var_3=jose
var_4=paul
Sachant que je ne connais pas le nombre de ligne de mon fichier res.txt.
Comme vous allez vous en rendre compte, je debute en scipt shell :
# calcul du nombre de ligne
nb_lines=`wc -l res.txt`
nb_lines=${nb_lines%*res.txt}
nb_lines=${nb_lines#******}
nb_lines=`echo $nb_lines | tr "[:blank:]" "t"`
limite=$(($nb_lines + 1))
echo "$limite"
while test $num != $limite
do
view_${num}=`sed -n '${num}p' res.txt`
echo "${view_${num}}"
num=$(($num + 1))
done
La calcul du nombre de ligne (trivial) fonctionne mais pas la creation/affectatcion des variables
J'ai besoin de vos lumieres pour ecrire un script shell somme toute assez bête. Je voudras affecter à des variables chaque lignes d'un fichier.
Fichier res.txt
>cat res.txt
albert
bertrand
jose
paul
J'aimerais avoir :
var_1=albert
var_2=bertrand
var_3=jose
var_4=paul
Sachant que je ne connais pas le nombre de ligne de mon fichier res.txt.
Comme vous allez vous en rendre compte, je debute en scipt shell :
# calcul du nombre de ligne
nb_lines=`wc -l res.txt`
nb_lines=${nb_lines%*res.txt}
nb_lines=${nb_lines#******}
nb_lines=`echo $nb_lines | tr "[:blank:]" "t"`
limite=$(($nb_lines + 1))
echo "$limite"
while test $num != $limite
do
view_${num}=`sed -n '${num}p' res.txt`
echo "${view_${num}}"
num=$(($num + 1))
done
La calcul du nombre de ligne (trivial) fonctionne mais pas la creation/affectatcion des variables
A voir également:
- [Scrip shell] Help var_i=ligne_i d'un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Classic shell - Télécharger - Personnalisation
4 réponses
Salut
Voici un bout de code qui devrait faire l'affaire:
resultat:
var 1 :albert
var 2 :bertrand
var 3 :jose
var 4 :paul
Voici un bout de code qui devrait faire l'affaire:
num=1
while read line
do
eval var_${num}="$line"
num=$(($num+1))
done < res.txt
resultat:
var 1 :albert
var 2 :bertrand
var 3 :jose
var 4 :paul
syntax error near unexpected token `done'
Sinon essaye : done<res.txt sans espace ?
Est-ce que tu as modifié la mise en forme de la boucle ?