On Thu, Aug 12, 2004 at 01:44:47AM +0200, St�phane Graber wrote:
> Le Thu, Aug 12, 2004 at 01:16:31AM +0200, WaVeR a ecrit :
> > Le jeu 12/08/2004 � 00:37, Chris De Bleu a �crit :
> > > bonjour,
> > >
> > > Sous bash, j'ai recupere de la lecture d'un fichier la
> > > ligne suivante
> > > dd 2 2 0 40 ~488 40 POB /dev/chunk
> > > et je voudrais lire le nombre 488. J'ai fait ceci
> > >
> > > nn=`head -1 myfile |awk '{print $6}'`
> > >
> > > le probleme, c'est que j'obtiens ~488 et c'est normal.
> > >
> > > Comment faire pour avoir seulement 488?
> >
> > tu passes le r�sultat � sed
> > nn=`head -1 myfile | awk '{print $6}' | sed -e 's/~//"`
> >
> > Salutations.
> > > Merci
> ...
> J'ai �t� plus rapide de trois minutes :)
> Au moin ca prouve que ma solution doit �tre la bonne.
Qu'est-ce que ``la bonne'' solution?
1: Uniquement bash (sans autre binaire: head, awk, sed, etc.):
$ read -a nn <myfile
$ echo ${nn[5]#\~}
488
2: Uniquement sed, sans m�me bash, ou autre head, awk, etc.
$ nn=$(sed 's/^.* ~\([0-9]*\) .*$/\1/;q' <myfile)
$ echo $nn
488
3: En passant par le m�me chemin que celui propos�, mais en utilisant
la commande tr, qui dans ce cas sera un poil plus rapide:
$ nn=$(head -1 myfile | awk '{print $6}' | tr -d \~)
$ echo $nn
488
4: En n'utilisant que awk:
$ nn=$(awk '{print substr($6,2);exit}' <myfile)
$ echo $nn
488
5: perl:
$ nn=$(perl -pe '/^.* ~(\d*) .*$/;print $1;exit' <myfile)
$ echo $nn
488
6, 7, 8... Il n'existe pas UNE ``bonne solution'', mais suivant le contexte,
le but, les limitations, il en existe une quasi infinit�.
A noter que dans mes exemples, j'utilise la syntaxe `` $(liste de commande) ''
plut�t que le backtick `` `liste de commande` ''. L'effet est le m�me � savoir
que dans les deux cas un sous-shell est ex�cut� et la sortie standard de ce
sous-shell, est transmise en arguements au reste de la ligne, mais la syntaxe
utilisant les parenth�se pr�sente deux avantages: Elle est plus lisible et est
plus facilement imbriquable.
--
F�lix Hauri - <[EMAIL PROTECTED]> - http://www.f-hauri.ch
_______________________________________________
gull mailing list
[EMAIL PROTECTED]
http://lists.alphanet.ch/mailman/listinfo/gull