Toon posts:

[Fedora] Grep Mailadressen uit SQL Dump

Pagina: 1
Acties:

Verwijderd

Topicstarter
Al de gehele avond ben ik aan het Googlen en aan het rondspeuren op GoT. Helaas heb ik nog nergens iets kunnen vinden waardoor ik me probleem heb kunnen oplossen.

Mijn probleem is als volgt:

Van een (inmiddels niet meer actieve) SQL dump wil ik graag alle mailadressen filteren naar een .txt bestand. Het lukt me wel de gehele regels met daarin mailadressen uit de file te pikken maar niet de gehele mailadressen.

Weet iemand misschien het juiste commando hiervoor??

Ik ben gebruiker van Fedora Core 4 en heb tot nu toe aan zitten te vogelen met commandos als zijnde:
Grep *@* sqldump.txt > maillijst.txt
cat sqldump.txt | grep *@* > maillijst

Alvast bedankt voor de hulp.

  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 03-02 16:28

zomertje

Barisax knorretje

Staan de mailadressen altijd op dezelfde plek in de regel? Anders zou je daar eens wat mee kunnen proberen
Misschien kun je dan een voorbeeldregel hier posten? (verander wel even het mailadres :P )

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun


  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 12:04
mysql op je eigen machine installeren, importeren en je hebt een hele query engine ter beschikking lijkt me?

Verwijderd

Topicstarter
De mailadressen staan niet allemaal op dezelfde plek helaas.

SQL install op locale pc of import op een server is geen optie :-(

2 voorbeeld regels uit het bestand:

57ad75ba463c', 'no', '', 0, NULL),
(51, 'nick', '', 'e14fa23974a85db01e0980586d6cfd3f', 0x0902c5a1cb9c04e280bac28dc2a1c385c3b0c2af117b7a12135dc5bdc3b8c3bb, 'xxxx@hotmail.com', 'confirmed', '2005-12-05 13:24:23', '2006-04-10 13:18:35', '2006-07-01 10:29:02', '', 'normal', 1, '', 'yes', '62.251.118.223', 0, 'hier stond een url', 17196809668, 13977164140, '', 15, '[pm]', '2006-05-10 kan zijn pc niet 24/7 aan laten staan(brutus)\r\n2006-05-09 pm ivm h&r op Juanes / Mi Sangre (Tour Edition)\r\n(brutus)\r\n28-01-2006 Cat pm gestuurd ivm opmerkingen in de shout, met de vraag of hij het in een mail wil toelichten, ratio problemen.', 'yes', 'yes', 'no', 0, 'no', '0000-00-00 00:00:00', 0, 0, 0, 'yes', 'no', 'de366902b0279c7634047eda06a6de8d', 'no', '', 0, NULL),
(214, 'nick', '', 'de016fd696fa6e631ac0cc546efae88e', 0x60c387c593c3a7c3b416c2a2c2b704c2a0e282ac06c38ac3ace280a1c2b959c3b129c380, 'xxx@chello.nl', 'confirmed', '2005-12-23 13:14:04', '2006-05-10 14:46:12', '2006-07-07 15:38:13', '', 'normal', 1, '', 'yes', '80.56.157.93', 0, '', 8736191636, 8615515341, '', 15, '', '2006-03-21H&R PM op 16 Blocks (Bruce Willis 15 juni in de bioscoop) (realbuster)', 'yes', 'yes', 'no', 0, 'no', '0000-00-00 00:00:00', 0, 0, 0, 'yes', 'no', '9029974cd12cd99bb027028b2789fc65', 'no', '', 0, NULL),
(7111, 'nickname', '', 'a3dc75b3adde5214010f46fec0c46551', 0xc3a6c3a0c3870e06c2b2c395c398c3a92d74e280a61f3ac2acc2b6c2a024c390c389, 'xxx@hotmail.com', 'confirmed', '2006-03-09 18:20:39', '2006-05-23 20:54:03', '2006-05-23 18:55:15', 0xc3807fc38be280b9c2bbe2809909c2b8c2ba47266dc39154e28098c3a547c5b8cb9c68, 'normal', 1, NULL, 'yes', '82.173.99.105', 0, '', 7456983033, 2192850814, '', 0, '', '', 'yes', 'yes', 'no', 0, 'no', '0000-00-00 00:00:00', 0, 0, 0, 'yes', 'no', 'ec0131751dfc80e1e60c1244c99b0104', 'no', '', 0, NULL),
(7112, 'gebruiker', '', '23bf1bd55cd2811eec4613f64b399b9e', 0x71c3912363c3b4537bc2bd344840e280a622c3b2c3a527682802c2b1, 'xxx@hotmail.com', 'confirme

[ Voor 114% gewijzigd door Verwijderd op 12-07-2006 11:12 ]


Verwijderd

Zoiets?

sed -n "s/.*'\(.*@.*\.[a-Z]\{2,3\}\)'.*/\1/p" sqldump.txt > maillijst.txt

Verwijderd

Zie dat steeds in dezelfde kolom staan, eenvoudiger is dus nog:

awk -F, '{print $6}' sqldump.txt

Verwijderd

Topicstarter
Met deze is dit het resultaat:
sed -n "s/.*'\(.*@.*\.[a-Z]\{2,3\}\)'.*/\1/p" sqldump.txt > maillijst.txt

Mail@Mail.nl', 'confirmed', '2005-12-05 12:00:00', '2006-07-07 10:53:46', '2006-07-07 21:25:04', 0x3bc3965e1e0fc38cc38f6b2b6ec39936360bc2b80c37c2a1c3a0c5be, 'normal', 1, '', 'yes', '82.173.127.157', 6, 'http://www.avatarcorner.com/data/thumbnails/4/Daimler%20Chrysler.jpg
Mail@Mail.nl
Mail@Mail.nl', 'confirmed', '2005-12-05 13:24:23', '2006-04-10 13:18:35', '2006-07-01 10:29:02', '', 'normal', 1, '', 'yes', '62.251.118.223', 0, 'http://members.home.nl/zzzzz/DLM/Avatar%20XXX.bmp
Mail@Mail.nl
Mail@Mail.nl
Mail@Mail.nl

Met de 2de mogelijkheid krijg ik verschillende mailadressen tussen aanhalingstekens maar ook getallen etc.

Is er een mogelijkheid de eerste nu alsnog nogeens te filteren zodat de rest er allemaal uit is... De opbouw is dat wanneer er een mailadres in staat hij op het begin van de regel staat vermeld.

  • teun-v
  • Registratie: Maart 2005
  • Niet online

teun-v

Koffie? ja graag...

zou moeten werken maar is wel smeerig:

cut -d,\ ' -f6 /sqldump.txt | cut -d' -f1 > maillijst.txt
ik weet niet zeker of het quotje (') ook geescapt moet worden

edit:
als je getallen krijgt kun je er nog een grep voor doen:
grep @ /sqldump.txt | cut -d,\ ' -f6 | cut -d' -f1 > maillijst.txt

[ Voor 41% gewijzigd door teun-v op 12-07-2006 13:12 ]

Ook gek op Ovalracen? | Canon EOS 350 D | Canon EF-S 10-22mm F/3.5-4.5 | Sigma 17-70 F/2.8-4.5 DC Macro | Canon EF 70-200 F/2.8L USM | >Blog< |


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 06-01 23:13

DeMoN

Pastafari

Oke, gooi dit script in dezelfde dir als die sqldump.txt en executeer het.
#!/usr/bin/env python
import re
regex = re.compile(".+\\@(\\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)(,?)")
best = file('sqldump.txt','r')
sqldump = best.read()
for block in sqldump.split():
   found = re.match(regex, block)   
   if found: print block.replace("'","").replace(",","")
best.close()


Het is redelijk ranzig :P Maar het werkt :P Laat het ff weten :)

[ Voor 23% gewijzigd door DeMoN op 12-07-2006 14:33 ]

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein

Pagina: 1