Rechercher : dans
Par :

Bash, recuper le numero de ligne dans une var

Dernière réponse le 14 nov 2007 à 21:41:11 total_newbie, le 14 nov 2007 à 01:09:42 
 Signaler ce message aux modérateurs

Bonjour,

je suis débutant en bash et je voudrais savoir comment recuperer dans une variable le numero de ligne d'un fichier où se trouve une chaine de caractères.
J'ai essayé avec ligne= grep -n "chaine" fichier ou encore ligne= `grep -n "chaine" fichier` mais ça ne donne rien.

merci d'avance.

Configuration: Linux
Firefox 2.0.0.8

Meilleures réponses pour « Bash, recuper le numero de ligne dans une var » dans :
Comment lire un fichier ligne par ligne Voir Comment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
Comment récupérer le résultat d'une commande dans une variable VoirComment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
[RegExp] Récupérer une adresse IP VoirFinalité Mise en œuvre Explications Interprétation du motif Récupérer une adresse IP Finalité Pour récupérer une IP dans un fichier texte, fichiers journaux, pages web, etc. Mise en œuvre L'expression régulière suivante combinée à la...

1

lami20j, le 14 nov 2007 à 07:15:13

Salut,

un exemple

lami20j@debian:~/trash$ cat aaa
ligne1
ligne2
chaîne
ligne4
lami20j@debian:~/trash$ grep -n chaîne aaa
3:chaîne
lami20j@debian:~/trash$ grep -n chaîne aaa | cut -d: -f1
3
lami20j@debian:~/trash$ ligne=$(grep -n chaîne aaa | cut -d: -f1)
lami20j@debian:~/trash$ echo $ligne
3
mais attention, si le motif existe sur plusieurs lignes il te faut un tableau
lami20j

Répondre à lami20j

2

jipicy, le 14 nov 2007 à 07:17:38

Salut,

Essaye avec "sed" :

ligne=$(sed -n '/chaine/=' fichier)
;-))

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

3

total_newbie, le 14 nov 2007 à 16:53:32

Merci beaucoup pour vos réponses ;)

Répondre à total_newbie

4

total_newbie, le 14 nov 2007 à 21:21:14

Pendant que j'y suis dans, le cas où "chaine" apparait plusieurs fois dans "fichier",y at-il un moyen pour mettre dans "ligne" la dernière ligne où est apparu "chaine" ?

Répondre à total_newbie

5

lami20j, le 14 nov 2007 à 21:35:37

lami20j@debian:~/trash$ cat aaa
ligne1
ligne2
chaîne
ligne4
chaîne
ligne5
ligne1
ligne2
chaîne
ligne4
chaîne
ligne5

lami20j@debian:~/trash$ grep -n chaîne aaa | cut -d: -f1
3
5
9
11
lami20j@debian:~/trash$ ligne=$(grep -n chaîne aaa | cut -d: -f1 | tail -1)
lami20j@debian:~/trash$ echo $ligne
11

lami20j

Répondre à lami20j

6

 total_newbie, le 14 nov 2007 à 21:41:11

Ben c'est vraiment rapide et efficace ici ;) :)
merci beaucoup

Répondre à total_newbie