|
|
|
|
Salut tout le monde, j'aimerais avoir de l'aide concernant les commandes possibles sous Unix.
En gros, je fais une recherche dans un fichier avec grep et je voudrais afficher la première concordance qu'il trouve, ensuite afficher que la deuxième concordance etc...
et je voudrais savoir si c'est possible avec la commande grep et une boucle for ou si il y a plus simple en utilisant une autre commande.
Merci d'avance
Merci de ta réponse mais j'ai encore un souci, voila ce que ce lame fait avec ton script :
|
Salut,
#! /bin/bash nb=0 while read ligne do (( nb = $nb + 1 )) echo "Occurence n°$nb :" $ligne done < <(grep 'PA Bay [0-9]* Information:' test.txt)Sinon si tu veux garder la solution de FullVolant : OLD_IFS=$IFS IFS=$'\n' nb=0 for ligne in `grep 'PA Bay [0-9]* Information:' test.txt` do (( nb = $nb + 1 )) echo "Occurence n°$nb :" $ligne done IFS=$OLD_IFS;-)) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Je te remercie beaucoup de ta réponse jipicy car ça fonctionne très bien mais par contre je ne comprends les lignes que tu as rajouté au programme de fullvolant. Tu voudrais bien m'expliquer à quoi elle sert exactement?
|
Alors la variable pédéfinie du shell "IFS" (Input Field Separator) contient le caractère séparateur de champs en entrée qui par défaut est l'espace (ou tabulation).
|
Je te propose de parcourir toutes les lignes du fichier et d'utiliser des variables.
|
Bon j'ai une autre petite question cette fois-ci concernant la commande if :
|
Que te dire... affiche ton code et tes tests... [jp@MDK tmpfs]$ A="Bonjour" ; echo $A
Bonjour
[jp@MDK tmpfs]$ if [ -n "$A" ] ; then echo "Ok" ; else echo "Variable vide :-(" ; fi
Ok
[jp@MDK tmpfs]$ unset A
[jp@MDK tmpfs]$ if [ -n "$A" ] ; then echo "Ok" ; else echo "Variable vide :-(" ; fi
Variable vide :-(
[jp@MDK tmpfs]$;-))
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Bon me revoila une fois de plus, mais par contre la je ne suis pas sur que la question seras dans le bon forum.
|