Pages : 1
#1 Le 21/11/2007, à 15:58
- B@rtounet
Script tableau
Bonjour je cherche à mettre en place un tableau selon un script shell...
Les bases:
j'ai deux fichiers texte:
dans fichier 1 j'ai par exemple:
windowsxp
linux
windows2000
dans fichiers 2 j'ai:
10%
20%
30%
même nombre de ligne dans les deux fichiers
j'aimerais avoir en résultats un tableaux de type:
[OS] [%]
Windowsxp 10%
linux 20%
windows2000 30%
Si vous pouviez me donner quelques pistes...
Hors ligne
#2 Le 21/11/2007, à 16:51
- abetsic
Re : Script tableau
Salut,
Personnellement j'oublie toujours la syntaxe pour faire des tableaux en bash et je me rabat sur le man de bash (man bash dans une console).
pour connaitre le nombre de ligne de ton fichier tu peux utiliser wc
Sinon j'ai vu récemment un exemple pour traiter les lignes d'un fichier, c'est quelque chose du genre
cat ton_fichier | while read line do
echo $line
done
Sinon tu peux utiliser sed pour afficher une certaine ligne... bref tu as beaucoup de solutions possibles.
Hors ligne
#3 Le 21/11/2007, à 20:28
- B@rtounet
Re : Script tableau
j'ai fait comme ca si ca vous interesse
suse1:~ # vi /usr/sbin/vminfo
#
#Xen Virtual Machine Information by Antony MARTINEAU.
#
#
#
#
namelist="/home/antony/namelist"
reslist="/home/antony/reslist"
cat /etc/xen/vm/*|grep "name"|cut -d'"' -f2 > $namelist
cat /etc/xen/vm/*|grep "#_r"|cut -d'"' -f2 | cut -d"#" -f2 | sed 's/_//' | sed 's/_/ /' |sed 's/_/ /' | sed 's/_/ /'| sed 's/_/ /' > $reslist
lines=$(cat $namelist | wc -l)
if [ -z $lines ]; then
lines=1
fi
for i in `seq 1 $lines`
do
vmname=$(cat $namelist | awk 'NR == '$i' {print;}')
vmres=$(cat $reslist | awk 'NR == '$i' {print;}')
#echo "$vmname $vmres"
#echo $vmname|awk '{print $1}'|column -t ; echo $vmres|awk '{print $1,$2,$3,$4}'|column -t
tableau="$vmname"
tableau[1]="$vmres"
echo ${tableau[*]}
done
rm -f $namelist
rm -f $reslist
Hors ligne
#4 Le 21/11/2007, à 21:26
- abetsic
Re : Script tableau
Tu n'es pas obligé de faire cat ton_fichier | wc -l tu peux directement faire wc -l ton_fichier
Bon j'avoue je fais souvent comme toi, mais j'ai remarqué que tu le faisais également pour awk, grep... qui peuvent aussi prendre le nom du fichier en argument.
Ceci étant dit je trouve que l'écriture avec le pipe améliore la lisibilité du script, c'était juste au cas o๠tu voudrais épargner quelques une de tes touches la prochaine fois
Et j'ai même appris quelque chose dans ton code : Je ne savais pas qu'on pouvait scinder une commande awk en deux parties pour mettre une variable entre les deux paires d'apostrophes (awk 'NR == '$i' {print;}'). Je suppose que c'est vrai pour les commandes sed également ?
Hors ligne
#5 Le 22/11/2007, à 13:48
- Alain.g
Re : Script tableau
n'aurait-il pas été plus simple de faire quelque chose comme :
IFS=$'\n'
tabname=(`cat $namelist`)
tabres=(`cat $reslist`)
for ((i=0;i<=${#tabname[*]};i++))
do echo "${tabname[$i]} ${tabres[$i]}"
done
?
(en Bash)
Dernière modification par Alain.g (Le 22/11/2007, à 13:49)
Xubuntu Karmic !
Hors ligne
Pages : 1