Bash, recuper le numero de ligne dans une var

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

6 réponses

  1. Modérateur
    Salut,

    Essaye avec "sed" :
    ligne=$(sed -n '/chaine/=' fichier)
    ;-))
    7
    1. Modérateur
      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
      1
      1. 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" ?
        0
        1. Modérateur
          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
          
          0
          1. ben c'est vraiment rapide et efficace ici ;) :)
            merci beaucoup
            0
            1. merci beaucoup pour vos réponses ;)
              -1