#1 Le 21/09/2006, à 11:26
- next-d
extraire des infos d'un fichier txt
je veux retirer ts les emails d'un fichier (txt ou cvs ou xls)
quel est le maniere facon et la plus simple?
quel est le meilleur language?
un coup de main serait le bien venu
Hors ligne
#2 Le 21/09/2006, à 11:30
- Valère
Re : extraire des infos d'un fichier txt
tu as posté dans la mauvaise section
1984 was not supposed to be an instruction manual
hostux.net serveur mail/jabber + hébergement d'images.
Hors ligne
#3 Le 21/09/2006, à 12:11
- next-d
Re : extraire des infos d'un fichier txt
c'est dans koi alors
Hors ligne
#4 Le 21/09/2006, à 12:17
- Valère
Re : extraire des infos d'un fichier txt
Un modérateur a déplacé le sujet dans une partie plus appropriée du forum comme tu as du t'en apercevoir
1984 was not supposed to be an instruction manual
hostux.net serveur mail/jabber + hébergement d'images.
Hors ligne
#5 Le 21/09/2006, à 12:37
- kaworu
Re : extraire des infos d'un fichier txt
va donne un exemple de ton fichier txt parce que là c'est vague. Perso je ferai un petit script bash.
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#6 Le 21/09/2006, à 19:26
- next-d
Re : extraire des infos d'un fichier txt
exemple de fichier txt
Maire : M. xxxx xxxxxx
PLACE ROBERT MARCEPOIL
01500 AMBERIEU EN BUGEY
Tél. : 0474461700
Fax 0474383619
Email xxxxxx.xxxxxx@wanadoo.fr
Internet www.villeamberieuenbugey.fr
POPULATION 11927
voila pour les fichiers txt..
attention c'est pas forcement la meme dispositions
Dernière modification par next-d (Le 21/09/2006, à 19:27)
Hors ligne
#7 Le 21/09/2006, à 20:57
- kaworu
Re : extraire des infos d'un fichier txt
Ton but c'est d'avoir une liste d'email sans les noms etc.. correct ?
Si c'est juste ça :
grep "^Email" ton_fichier.txt | cut -d" " -f 2
ça devrait faire l'affaire non ?
Si non, donne aussi un exemple de la sortie que tu veux ...
Dernière modification par kaworu (Le 21/09/2006, à 20:58)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#8 Le 22/09/2006, à 07:26
- next-d
Re : extraire des infos d'un fichier txt
merci je vais tester mais je veux bien une petite explication
Hors ligne
#9 Le 22/09/2006, à 07:52
- roozeec
Re : extraire des infos d'un fichier txt
grep "^Email" ton_fichier.txt : Rechercher une ligne avec Email en debut de ligne (caractere ^)
cut -d" " -f 2 : Prendre le champs 2 en declarant que le separateur de champ est un espace
le | signifie la sortie de grep va vers le cut (pipe unix)
Linux sur http://blog.roozeec.fr
Réseau : http://ubuntu-francophone.ning.com
Hors ligne
#10 Le 22/09/2006, à 12:12
- bapoumba
Re : extraire des infos d'un fichier txt
Déplacé dans Développement-Programmation
| Ubuntu Forums |
J'aime les fraises.
Hors ligne
#11 Le 22/09/2006, à 13:20
- next-d
Re : extraire des infos d'un fichier txt
voila le resultat:
Email
:
Email
Email
Email
secretariat.general
:
xxxx@free.fr
ca merde un peu
on ne peut pas faire une recherche uniquement sur les @ non?
Hors ligne
#12 Le 22/09/2006, à 13:30
- cep
Re : extraire des infos d'un fichier txt
grep "Email" "ton_fichier" | awk '{ print $2}'
Hors ligne
#13 Le 22/09/2006, à 13:37
- next-d
Re : extraire des infos d'un fichier txt
j'ai des adresses non valide aussi
commune.ceyxxxxx
Mairie.Chaxxxx
gr...
Hors ligne
#14 Le 22/09/2006, à 13:53
- cep
Re : extraire des infos d'un fichier txt
Il faut que la présentation soit la même que dans ton exemple, pour respecter le champ 2 de awk. De même il faut des adresses sous la forme xxxxxx.xxxxxx@wanadoo.fr
Sinon, il te faut un script qui supprime Email et affiche ensuite la ligne entière.
Hors ligne
#15 Le 22/09/2006, à 14:02
- cep
Re : extraire des infos d'un fichier txt
Tu peux faire :
sed 's/[Ee]mail//g' ton_fichier | grep @ >ton_fichier2 ; cat ton_fichier2
Que tu simplifieras ensuite.
Hors ligne
#16 Le 22/09/2006, à 14:05
- trucutu
Re : extraire des infos d'un fichier txt
Tu peux aussi tenter de faire un readline (C, python...), puis "spliter" la chaîne de caractère obtenue en utilisant le séparateur ' ', et ne garder que le 2° élément de la liste générée
La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !
Hors ligne
#17 Le 22/09/2006, à 14:27
- Black_pignouf
Re : extraire des infos d'un fichier txt
J'ai pas bien compris, veux tu virer la ligne entière, l'adresse mail ou le mot Email? Ou alors juste récupérer la liste d'email?
Pour juste récupérer la liste:
grep -iEo '[a-z\.0-9\-_]{1,}@[a-z0-9\-_]*\.[a-z]{2,4}' fichier.txt
devrait faire l'affaire.
Pour voir la liste des emails non valides:
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}'
Ouf!
Dernière modification par Black_pignouf (Le 23/09/2006, à 11:16)
Hors ligne
#18 Le 22/09/2006, à 14:40
- cep
Re : extraire des infos d'un fichier txt
Ouf!
Salut Black_pignouf,
Et moi qui craignais d'avoir mis une ligne trop difficile à aborder pour un débutant
Cordialement.
cep
Hors ligne
#19 Le 22/09/2006, à 14:54
- next-d
Re : extraire des infos d'un fichier txt
ouiouioui
je vais tenter mais un peu d'explication serait le bien venu
histoire de comprendre
Hors ligne
#20 Le 22/09/2006, à 14:55
- Black_pignouf
Re : extraire des infos d'un fichier txt
C'est vrai que c'est pas évident au premier abord, mais comme souvent avec les regexp, elles paraissent plus monstrueuses qu'elles ne le sont. Si je trouve le temps, je passerai expliquer la procédure utilisée.
J'aimerais déjà savoir si c'est ce que next-d voulait!
Hors ligne
#21 Le 22/09/2006, à 15:11
- cep
Re : extraire des infos d'un fichier txt
ouiouioui
je vais tenter mais un peu d'explication serait le bien venu
histoire de comprendre
Alors pour : sed 's/[Ee]mail//g' ton_fichier | grep @ >ton_fichier2 ; cat ton_fichier2
sed 's/[Ee]mail//g' = avec sed et l'option s tu remplaces Email ou email par un espace (ceci afin de conserver la même présentation), et l'option g pour le faire sur toutes les occurences.
Cela sur le fichier ton_fichier
| grep @ = tu fais un "tube" pour traîter ensuite avec l'utilitaire grep qui va rechercher l'occurence @ dans les lignes du fichier.
>ton_fichier2 = va créer un nouveau fichier avec comme nom : ton_fichier2 pour garder intacte ton_fichier.
; cat ton_fichier2 = va ensuite afficher à l'écran avec l'utilitaire cat le nouvau fichier ton_fichier2.
Tu peux bien sûr supprimer cette partie pour ensuite éditer avec autre chose.
Et il faut adapter ton_fichier avec le nom.
Voilà, c'est assez simple en réalité.
Bonne continuation.
cep
Hors ligne
#22 Le 22/09/2006, à 15:27
- next-d
Re : extraire des infos d'un fichier txt
ok parfait la c'est cool
sinon en python ou ruby c'est plus dure ou simple???
des fct existent peut etre deja?
enfin .... je ne suis pas un pros
Hors ligne
#23 Le 22/09/2006, à 18:57
- kaworu
Re : extraire des infos d'un fichier txt
sed -e 's/[Ee]mail//g' ton_fichier.txt | grep @ | tee ton_fichier2.txt
l'utilisation de tee est pratique, il va afficher ce qu'il consomme dans le pipe et l'enregistrer dans ton_fichier2.txt
en ruby ou python je dirait que c'est pas plus facile ni plus court (ne parlons même pas du C...). Pour un petit hack comme celui-çi, bash (ou un autre shell) convient parfaitement (AMHA).
Dernière modification par kaworu (Le 22/09/2006, à 18:59)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#24 Le 22/09/2006, à 22:20
- Black_pignouf
Re : extraire des infos d'un fichier txt
Effectivement, un script ruby ne sera pas plus court (je vois mal comment ça serait possible), mais peut-être plus facile à comprendre. Je reviens avec un scripounet.
Le script de base donnerait ça:
#! /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
Je vais m'acheter une vie et je reviens.
Dernière modification par Black_pignouf (Le 23/09/2006, à 00:18)
Hors ligne
#25 Le 23/09/2006, à 09:53
- kaworu
Re : extraire des infos d'un fichier txt
cherche_mail=ligne.match(/\b[\w.\-]+@[\w\-.]+.[\w]{2,4}/)
plus facile à comprendre hein ?
De plus, si je ne m'abuse cela va bien printer la réponse, mais pas la sauver dans un fichier.
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne