[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 -
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 :
J'aimerai obtenir la ligne et la colonne de tous les EXIT contenu dans ce fichier :
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.
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
-
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)?
-
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. -
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
-
Où,
perl -ne 's/\t/" " x 8/eg;($r)=/(\s+)EXIT/;print "ligne: $., colonne: ",length($r)+1,"\n" if /EXIT/' ligcol.txt