[Shell] trouver emplacement chaine caractère

HeZiX Messages postés 2 Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
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. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  2. HeZiX Messages postés 2 Statut Membre
     
    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
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Où,
    perl -ne 's/\t/" " x 8/eg;($r)=/(\s+)EXIT/;print "ligne: $., colonne: ",length($r)+1,"\n" if /EXIT/' ligcol.txt


    0