PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datei parsen



meinereinerseiner
26-01-2007, 13:04
hi,

ich mal wieder mit meinen Sorgen....

Ein AD export ergibt die mehr oder weniger sinnige datei:

SMTP:user1@aaaaaaaa.de
X400:c=DE;a= ;p=fffffffffffff;o=fffffffffff?fff;s=ffff;g=fff;;S MTP:user2@bbbbbbb.de;MS:fffffffffffff/fffffff/ffff;CCMAIL:ff, ff at fffffffffffff;
MS:fffffffffffff/fffffff/fffffff;X400:c=DE;a= ;p=fffffffffffff;o=fffffffffff?fff;s=fff;g=ff;;CCM AIL:fff, ff at fffffffffffff;SMTP:user6@cccccccc.de;
smtp:user3@xxxxxxxx.de;smtp:user3@dddddddd.de;SMTP :user3@cccccccc.de;MS:fffffffffffff/fffffff/user3;X400:c=DE;a= ;p=fffffffffffff;o=fffffffffff?fff;s=ff;g=ff;i=VH; ;CCMAIL:ff, ff at fffffffffffff;
SMTP:user4@cccccccc.de;smtp:user4@dddddddd.de;X400 :c=DE;a= ;p=fffffffffffff;o=fffffffffff?fff;s=fffff;;smtp:u ser4@dddddddd.de;MS:fffffffffffff/fffffff/fff;IFAX:ff@+49;FAXMAKER:user4@fffffffffffff.fff(f )ff.com;CCMAIL:ff, ff at fffffffffffff;
smtp:user5@aaaaaaaa.de

aus dieser hätte ich ganz gerne alle smtp adressen ausgelesen.

Problem ist für mich, das nicht ganz einheitliche format.
Die meisten sind ja durch "smtp:foo@bar.com;" zu finden, so das theoretisch alles zischen "smtp:" und dem nächsten ";" eine adresse ist, müsste ja evtl. mit awk machbar sein, oder?
Allerdings geht das dann ja irgendwie nicht bei den zeilen, wo nur eine adresse steht, da fehlt dann das abschliessende ";" und dann sind da ja auch noch die Leerzeichen am anfang jeder zeile....

hat jemand vielleicht einen idee für einen ansatz?

thx
der tom

michael.sprick
26-01-2007, 13:18
Bei awk fehlt mir etwas die routine, aber in Perl könnte es so funktionieren:



#!/usr/bin/perl

use strict;
use warnings;

while(<STDIN>)
{
my @Fields = split(/;/,$_);
foreach(@Fields)
{
chomp;
$_ =~ s/^ *//g;
print substr(lc($_),5) , "\n" if (/smtp:/i);
}
}




#> cat mehr_oder_weniger_sinnige_datei | ./skript.pl
user1@aaaaaaaa.de
user2@bbbbbbb.de
user6@cccccccc.de
user3@xxxxxxxx.de
user3@dddddddd.de
user3@cccccccc.de
user4@cccccccc.de
user4@dddddddd.de
user4@dddddddd.de
user5@aaaaaaaa.de


hth, michael

meinereinerseiner
26-01-2007, 13:26
Bei awk fehlt mir etwas die routine, aber in Perl könnte es so funktionieren:
hth, michael

klasse - ob perl oder awk is ja egal.

der tom

reneeb
26-01-2007, 21:47
Vielleicht ist auch http://wiki.perl-community.de/bin/view/Wissensbasis/FaqFindInTextEmail ganz interessant...