[Shell] trouver emplacement chaine caractère

Bonjour,

je souhaiterais trouvé l'emplacement exact d'une chaine ou des chaines de caracteres dans un fichier.
par exemple, dans un fichier test.txt :

blabla blablaaaaa
EXIT
fdkf mfmdf 
        EXIT
        test
fin


J'aimerai obtenir la ligne et la colonne de tous les EXIT contenu dans ce fichier :
ligne: 2, colonne: 1
ligne: 4,colonne: 8


la ligne est assez aisé a trouvé avec "grep -n" mais j'ai des problèmes avec le numéro de la colonne, je voulais utilisé une boucle "while read ligne ..." seulement le read supprime les espaces et tabulations :(

Si vous avez une idée merci d'avance.
Configuration: Linux
Firefox 1.5.0.9

4 réponses

  1. Modérateur
    Salut,

    En bref, s'il y a des tabulations, comment tu dois faire?
    Si tu utilise comme séparateur l'espace alors les tabulations doivent être converti dans combiens d'espaces (par défaut c'est 8 espaces il me semble)?

    0
    1. les tabulations sont considéré comme 8 espaces.
      J'aimerai savoir comment compter correctement (y compris les espaces / tabulation) pour savoir ou se situe la chaine de caractère sur la ligne.
      0
      1. Modérateur
        Re,

        tu es obligé de faire en shell?!

        voici en Perl
        ~$ cat ligcol.txt
        blabla blablaaaaa
        EXIT
        fdkf mfmdf
                EXIT
                                                test
                                                                        fin
        ~$ perl -ne 's/\t/" " x 8/eg;@col=$_=~/(\s)/g;print "ligne: $., colonne: ",@col+0,"\n" if /EXIT/' ligcol.txt
        ligne: 2, colonne: 1
        ligne: 4, colonne: 9

        0
        1. Modérateur
          Où,
          perl -ne 's/\t/" " x 8/eg;($r)=/(\s+)EXIT/;print "ligne: $., colonne: ",length($r)+1,"\n" if /EXIT/' ligcol.txt


          0