Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 23/09/2006, à 11:09

Black_pignouf

Re : extraire des infos d'un fichier txt

Effectivement. Mais rien ne t'empêche de > fichier.sortie.txt smile

Un peu plus d'explications:

grep -iEo '[a-z\.0-9\-_]{1,}@[a-z0-9\-_]{1,}\.[a-z]{2,4}' fichier.txt

grep recherche une expression régulière dans un fichier (fichier.txt). C'est ce que l'on désire, non?
-i indique que la recherche ne fera pas attention à la casse (ie Email ou eMaiL)
-E indique que l'on utilise des expressions régulières étendues (=plus de fonctionalités)
-o indique que grep ne nous renverra que la partie correspondante à l'expression régulière, pas la ligne entière.


L'expression régulière maintenant:
I)

[a-z\.0-9\-_]

I.1)

a-z

Quelque chose entre a-z (=une lettre, majuscule ou minuscule grâce au -i)
I.2)

\.

un point . (il faut "échapper" le point avec \ devant, car . tout seul signifie "n'importe quel caractère")
I.3)

0-9

un chiffre
I.4)

\-

un tiret (de nouveau échappé avec \ devant, car - est interprété comme un intervalle, comme par exemple a-z)
I.5)

_

rien de spécial à dire smile

a-z\.0-9\-_ a été placé entre crochets, pour indiquer : soit une lettre, soit un nombre, soit un point, un tiret - ou un tiret _.
#############################
II)

{1,}

placé après [a-z\.0-9\-_] signifie que l'on répète le même motif une fois ou plus.
#############################
III)

[a-z\.0-9\-_]{1,}@[a-z0-9\-_]{1,}

est donc un mot d'au moins un caractère, composé seulement de lettres, chiffres ou -._, suivi d'un arobase, suivi de nouveau d'un mot d'au moins un caractère, composé seulement de lettres, chiffres ou -._.
#############################
On y arrive!

IV)

\.[a-z]{2,4}

est un point suivi d'un mot de 2, 3 ou 4 caractères, composés seulement de lettres. Par exemple, .fr, .com, .net, .info, mais pas .ubuntu ou .fr9
#############################


grep -i email fichier.txt| sed 's/[Ee]mail \(.*\)$/\1/g' | grep -viE '^[a-z\.0-9\-_]{1,}@[a-z0-9\-_]*\.[a-z]{2,4}'

Pour la liste des emails non valides, il suffit de chercher toutes les lignes ayant le mot email (grep -i email fichier.txt), de remplacer la chaîne de caractères "Email " ou "email " par "" pour la supprimer, et ensuite d'effectuer le même test que précédemment (avec
[a-z\.0-9\-_]{1,}@[a-z0-9\-_]{1,}\.[a-z]{2,4}) mais en demandant de n'afficher que les lignes qui ne passent pas le test (option -v).


Et voilà! cool

Dernière modification par Black_pignouf (Le 23/09/2006, à 11:35)

Hors ligne

#27 Le 10/10/2006, à 07:32

next-d

Re : extraire des infos d'un fichier txt

merci a toi ca marche dans sa globalite smile
apres que faut il faire pour que ca marche avec un fichier cvs ou xls?

je sais j'abuse smile

Hors ligne

#28 Le 10/10/2006, à 08:30

Black_pignouf

Re : extraire des infos d'un fichier txt

De rien!

Qu'entends tu par

ca marche dans sa globalite

? smile
Pour cvs ou xls, ca dépend comment les données sont enregistrées.

Hors ligne

#29 Le 10/10/2006, à 08:34

pabix

Re : extraire des infos d'un fichier txt

un fichier xls : essaie de l'ouvrir avec le gestionnaire d'archives de Gnome (file-roller) et d'extraire les fichiers qu'il contient.

Il doit y en avoir un qui contient les e-mails.

Pour plus d'informations sur les expressions rationnelles va voir http://fr.wikipedia.org/wiki/Regexp

Benoit


Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D

Hors ligne

#30 Le 10/10/2006, à 18:04

next-d

Re : extraire des infos d'un fichier txt

la je ne comprends pas bien l'histoire de file-roller
je viens d'essayer mais ca ne marche pas

Hors ligne

#31 Le 10/10/2006, à 18:08

next-d

Re : extraire des infos d'un fichier txt

Re: extraire des infos d'un fichier txt

De rien!

Qu'entends tu par

    ca marche dans sa globalite
====================================
jusaue des fois tu as des mail comme xxx.xxx@xxx(.ou -)xxx.xx
il suffit de faire une petite modif
sinon ca marche bien
===============
et tu attends koi par "ca dépend comment les données sont enregistrées"

Hors ligne

#32 Le 11/10/2006, à 23:45

lunique

Re : extraire des infos d'un fichier txt

usaue des fois tu as des mail comme xxx.xxx@xxx(.ou -)xxx.xx

Mais une adresse en jean.dupont@ubuntu-fr.org est valide non  ? de meme que jean.dupont@toto.new.fr.
A la limite, une vraie adresse pas bonne aiderai certainement la comprehension du probleme ^ ^

Hors ligne

#33 Le 12/10/2006, à 09:55

Black_pignouf

Re : extraire des infos d'un fichier txt

une adresse en ubuntu-fr.org sera validée par cette expression

grep -iEo '[a-z\.0-9\-_]{1,}@[a-z0-9\-_]{1,}\.[a-z]{2,4}' fichier.txt

alors que @toto.new.fr ne le sera pas.

grep -iEo '[a-z\.0-9\-_]{1,}@[a-z0-9\-_\.]{1,}\.[a-z]{2,4}' fichier.txt

règle le problème! (Pas encore parfaitement, car toto@.....fr sera valide! hmm)


Modif: typo

Dernière modification par Black_pignouf (Le 12/10/2006, à 09:56)

Hors ligne

#34 Le 21/10/2006, à 14:29

Black_pignouf

Re : extraire des infos d'un fichier txt

Je viens tout juste de découvrir kregexpeditor
C'est de la bombe de balle pour comprendre une expression régulière.
Je vous invite tous à l'installer, et à le tester avec cette expression:

[a-z\.0-9\-_]{1,}@[a-z0-9\-_\.]{1,}\.[a-z]{2,4}

Il l'explique bien mieux que moi ! big_smile

Hors ligne

#35 Le 09/11/2006, à 11:59

next-d

Re : extraire des infos d'un fichier txt

nikel de chez nikel
un pb de resolu et un autre apparait
dans ma liste j'ai plusieurs fois le meme mail.

kel est le moyen le plus simple pour qu'il soit unique.... smile soit lors du > ou du >> email.txt

Hors ligne

#36 Le 09/11/2006, à 13:17

Black_pignouf

Re : extraire des infos d'un fichier txt

Salut!

Rajoute un

| sort -u

à la fin de la commande, pour trier les adresses e-mail et virer les doublons wink

grep -iEo '[a-z\.0-9\-_]{1,}@[a-z0-9\-_]{1,}\.[a-z]{2,4}' fichier.txt | sort -u

Hors ligne

#37 Le 09/11/2006, à 19:22

gene69

Re : extraire des infos d'un fichier txt

bon allé, un professionnel utiliserai flex et bison....


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#38 Le 09/11/2006, à 21:57

Black_pignouf

Re : extraire des infos d'un fichier txt

@gene69, Rien à voir? hmm

Hors ligne

#39 Le 14/11/2006, à 09:40

next-d

Re : extraire des infos d'un fichier txt

histoire de compliquer
cette fois c'est pour avoir une idée
vous m'avez montrer l'extrait de donnée sur un fichier texte mais pour un ensemble de repertoire comprenant plusieurs fichiers txt.
smile
ouaou hum!!!
plus dure est-ce possible?

Dernière modification par next-d (Le 14/11/2006, à 09:40)

Hors ligne

#40 Le 14/11/2006, à 11:58

abetsic

Re : extraire des infos d'un fichier txt

grep -R "ce que tu recherches" * pour une recherche récursive dans les sous répertoires du dossier courant devrait faire l'affaire non ?

Hors ligne

#41 Le 14/11/2006, à 12:02

next-d

Re : extraire des infos d'un fichier txt

j'avais pas penseé a cette solution grrr.....
tongue

Hors ligne

#42 Le 14/11/2006, à 12:04

next-d

Re : extraire des infos d'un fichier txt

oui ca marche presque
voila un resultat
/media/My Book/test.CSV:xxxx@xxx.fr
pourkoi j'ai le chemin?

Hors ligne

#43 Le 14/11/2006, à 12:07

next-d

Re : extraire des infos d'un fichier txt

l'option -R ne marche pas tres bien
j'ai une diff de 2000 mails entre la methode recursive et celle du fichier par fichier:)

Hors ligne

#44 Le 28/03/2007, à 14:13

next-d

Re : extraire des infos d'un fichier txt

me revoila
500 lignes d'emails a trié c'est chiant grrr...
voila ma ligne de code
grep -iEo '[a-z\.0-9\-_.]{1,}@[a-z0-9\-_.]*\.[a-z]{2,4}' email.txt > resut.txt
j'ai un pb avec les majuscules et certains emails.

avez une idée pour recuperer tous les emails qlqsoit leur forme

merci d'avance

Hors ligne

#45 Le 28/03/2007, à 14:38

next-d

Re : extraire des infos d'un fichier txt

rien a faire si vous voulez tester ce pu.... de fichier

Hors ligne

#46 Le 28/03/2007, à 14:58

next-d

Re : extraire des infos d'un fichier txt

pour ce script ->
#! /usr/bin/ruby

Liste=File.new("fichier.txt")

Liste.each{|ligne|
        cherche_mail=ligne.match(/\b[\w.\-]+@[\w\-.]+.[\w]{2,4}/)
        puts cherche_mail[0] if cherche_mail
}
Liste.close

=================================================
comment faire une boucle pour effectuer une recherche jusqu'a la fin du fichier?
vivivi

Hors ligne