Commande shell

Commande shell - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 12-03-2005 à 19:31:49    

Bonjour, j'aimerais avoir 2 renseignement.
 
Le 1er et le plus "urgent" est de savoir comment fonctionne la boucle while pour faire une boucle de lecture.
Je m'esplique, je cherche à faire une boucle qui me lit un fichier csv ligne par ligne, de sorte que je puisse récupérer dans une variable une ligne pour la découpé et récupérer mes colonne grace à | gawk -F";" '{ print $1 }'
 
pour pouvoir une fois ma 1ere colonnes récupéré pouvoir ensuite y faire subire plusieur traitement et faire plusieurs actions avec cette colone et passer ensuite à la seconde ligne pour refaire pareil jusqu'à qu'il n'y ai plus de ligne.
 
 
 
La 2eme chose, je souhaiterais savoir comment créer uni chaine aléatoire en shell de X caractère alphanumérique ?
 
 
 
 
 
PS: si quelqu'un à un site qui répertorie les commande shell du linux avec espliquer toutes les possibilité avec les commande (mieu fait que le man bash donc) ça m'interesse !!!


Message édité par utopiaste le 12-03-2005 à 19:59:48
Reply

Marsh Posté le 12-03-2005 à 19:31:49   

Reply

Marsh Posté le 12-03-2005 à 19:35:33    

awk pour ca ?
 

cat fichier|cut -d';' -f1|while read ligne ; do
 echo $ligne
done


 
ou si tu tient a awk
 

cat fichier|awk -F";" '{ print $1 }'|while read ligne ; do
 echo $ligne
done


 
2) tu peut utiliser la variable $RANDOM
qui contient une valeur aleatoire


Message édité par ceric35 le 12-03-2005 à 19:53:07
Reply

Marsh Posté le 12-03-2005 à 19:41:01    

Ok merci je teste ça dès lundi.. je tien à awk pour etre capable de le faire avec une autre colone lol
 
 
Merci

Reply

Marsh Posté le 12-03-2005 à 19:45:36    

Pour créer une chaine de caractère aléatoire je fait comment au faite?

Reply

Marsh Posté le 12-03-2005 à 19:54:40    

La 2eme chose, je souhaiterais savoir comment créer un nombre aléatoire en shell de X caractère alphanumérique ?
 
C'est un nombre ou une chaine ?

Reply

Marsh Posté le 12-03-2005 à 19:59:10    

oups désolé au début j'était parti sur nombre mais c'est mieu chaine... je vais coriger ça... c'est chaine que je cherche.
 
Désoler... Merci

Reply

Marsh Posté le 12-03-2005 à 20:44:41    

perl powah

Code :
  1. perl -e 'sub alea { my @t=('a'..'z','A'..'Z','0'..'9'); return join "",map $t[rand @t],1..(shift); } print alea(8);'


Tu remplaces 8 par le nbre que tu veux

Reply

Marsh Posté le 12-03-2005 à 21:09:28    

et c'est utilisable dans un script compplettement en sh?  
 
si je met  
 
rand_var=perl -e 'sub alea { my @t=('a'..'z','A'..'Z','0'..'9'); return join "",map $t[rand @t],1..(shift); } print alea(8);'
 
ça va marcher?
 
(désoler je peu pas tester... j'ai pas de linux sous la main je l'aurais que lundi....)

Reply

Marsh Posté le 12-03-2005 à 21:26:24    

Code :
  1. rand_var=`perl -e 'sub alea { my @t=('a'..'z','A'..'Z','0'..'9'); return join "",map $t[rand @t],1..(shift); } print alea(8);'`


mais uniquement si tu as installé Perl

Reply

Marsh Posté le 12-03-2005 à 22:46:31    

faut que je me mette au perl !
 
mais avec tes commandes de fou , tu donne pas envie  :D

Reply

Marsh Posté le 12-03-2005 à 22:46:31   

Reply

Marsh Posté le 12-03-2005 à 23:01:55    

shellunix.com est assez bien pour commencer.
 
sinon pour le while. j'utilise  
while read toto
do
  blabla
done < mon_fichier.csv
 
après tu peux aussi utiliser set pour te passer de awk et travailler direct avec les variables positionnelle $1,$2, ...
 
wala :o


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 12-03-2005 à 23:41:56    

pk tu fais pas le tout en perl :D
 
perl c'est bien, mangez enh!

Reply

Marsh Posté le 13-03-2005 à 10:09:41    

voilà, Zaib3k, c'est cette syntaxe que j'avais vu sur le net mais que je n'ai pas tellement compri comment on s'en sert....
 
dans ton example
 
while read toto  
do  
  blabla  
done < mon_fichier.csv
 
si j'ai bien compri ma ligne va se retrouver dans la variable toto c'est bien ça? et à partire de là je peut récupérer mes colone. en parlan de ça, comment s'utilise la commande set ?
 
 
(quelqu'un aurais un listing des commnde shell avec toutes les utilisation possible des commande parsque le ban bash est pas très complet...)
 
 
 
Pour ce qui est du perl j'aimerais bien mais bon je connai rien au perl alors que j'ai un peut des base en shell et comme je suis lié à des contraintes de temps j'ai pas le choix...
 
 
 
Merci

Reply

Marsh Posté le 13-03-2005 à 10:58:56    

a ta place je ferais:
 

while read ligne;do
   IFS=";"
   set $ligne
   echo "champs1=$1 champs2=$2 ..."
done < mon_fichier.csv


 
pas besoin de awk :D


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 13-03-2005 à 11:01:12    

http://shellunix.com/
http://www.tldp.org/LDP/abs/html/ (existe en francais qq part sur le net)


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 13-03-2005 à 20:20:07    

Ok Merci bien du coup de main, je vous diré lundi soir si j'ai réussi à faire ske je veu !!
 
 
Merci !!!

Reply

Marsh Posté le 13-03-2005 à 21:12:06    

pour ton fichier CSV, tu fais un perl uniligne du genre  
perl -ne 'ici le traitement de chaque ligne représentée par la variable $_;'
Un super lien, qui fait suite a une série d'articles dans linux mag
http://sylvain.lhullier.org/publications/perl.html

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed