[Shell] trouver emplacement chaine caractère

Fermé
HeZiX Messages postés 2 Date d'inscription dimanche 4 mars 2007 Statut Membre Dernière intervention 4 mars 2007 - 4 mars 2007 à 11:41
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 4 mars 2007 à 13:45
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.
A voir également:

4 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
4 mars 2007 à 12:01
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
HeZiX Messages postés 2 Date d'inscription dimanche 4 mars 2007 Statut Membre Dernière intervention 4 mars 2007
4 mars 2007 à 12:13
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
4 mars 2007 à 13:04
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
4 mars 2007 à 13:45
Où,
perl -ne 's/\t/" " x 8/eg;($r)=/(\s+)EXIT/;print "ligne: $., colonne: ",length($r)+1,"\n" if /EXIT/' ligcol.txt


0