Toon posts:

met sed of vi alle text voor het @ verwijderen

Pagina: 1
Acties:
  • 59 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb momenteel een lijst met 1700 mail adressen. Nu wil ik alle addressen strippen zodanig dat ik alleen het domein naam heb in de lijst. Nu is het natuurlijk omslachtig als ik alle 1700 addressen alle namen voor het @ handmatig verwijder.

Ik wil bv het mail adres voornaam.achternaam@domein.nl wil veranderen in @domein.nl in de lijst. Nu wil ik sed of vi hier gebruiken.

Echter cat filenname | sed 's/*@*/@*' werkt dus niet.
Normaal in vi zou dit ook moeten werken namelijk :1,1700s/^*@$/@$/ maar dit is werkt dus ook niet.
Is er een goeie Linux/ Unix admin die hier een oplossing voor weet? :)

Alvast bedankt.

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
sed -e "s/.*\(@.*\)/\1" <filename>
Je moet .* gebruiken voor een onbepaald aantal willekeurige karakters. * zegt alleen dat je een onbepaald aantal malen de voorgaande expressie wilt matchen. Verder moet je iets met groepen doen. Iets wat tussen () staat definieert een groep, die je daarna weer terug gebruiken met \1 (eerste groep).

[ Voor 0% gewijzigd door Sir Isaac op 23-04-2007 10:29 . Reden: vergeten de ( en ) te escapen ]


Verwijderd

of gebruik awk: cat <file met emails> | awk -F\@ '{print $2}'

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Backrefs zijn niet nodig, sed 's/^.*@/@/' doet al wat je wil doen, en vergelijkbaar doet een gecorrigeerde versie van namesub het ook (die haalt in deze versie ook de @ weg), maar dit is met wat inlezen op reguliere expressies/textmanipulatie echt wel uit te vinden lijkt me :)

Dit topic is gesloten.