PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash: Email und Name auslesen



sip
23.01.14, 16:13
Hallo zusammen

Brauche eure Hilfe, verzweifle fast...

Muss aus einer grossen csv Datei mit HTML Inhalt E-Mail Adresse und Name, Vorname auslesen. Das ganze auf Unix mit Bash...

Nun habe ich es geschafft alle E-Mail Adressen auszulesen und zwar mit folgendem code:
Quelltext | Drucken
#/bin/bash if [ -f "$1" ]; then grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' "$1" | sort | uniq -i >>'/script/result/adressen-$(date "+%d-%m-%Y").csv' else echo "Expected a file at $1, but it doesn't exist." >&2 exit 1 fi


#/bin/bash

if [ -f "$1" ]; then
grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' "$1" | sort | uniq -i >>'/script/result/adressen-$(date "+%d-%m-%Y").csv'
else
echo "Expected a file at $1, but it doesn't exist." >&2
exit 1
fi

nun fehlt mir noch der Name und Vorname der Person.
Der HTML Code sieht ungefähr immer gleich aus:
Quelltext | Drucken
<td valign=""top""> <p class=""Untertitel"">Vorname Name</p> <p class=""Ueberschrift3"">blabla</p> <p class=""Haupttext"">&nbsp;</p> <p class=""Haupttext"">Adresse</p> <p class=""Haupttext"">PLZ Ort</p> <p class=""Haupttext"">Tel</p> <p class=""Haupttext"">Mobile</p> <p class=""Haupttext"">E-Mail Adresse</p> </td>


<td valign=""top"">
<p class=""Untertitel"">Vorname Name</p>
<p class=""Ueberschrift3"">blabla</p>
<p class=""Haupttext""> </p>
<p class=""Haupttext"">Adresse</p>
<p class=""Haupttext"">PLZ Ort</p>
<p class=""Haupttext"">Tel</p>
<p class=""Haupttext"">Mobile</p>
<p class=""Haupttext"">E-Mail Adresse</p>
</td>

Struktur: Name und Vorname sind immer im <p class=""Untertitel""></p>, jedoch sind auch solche Untertitel einträge vorhanden die nichts mit dem zu tun haben.

Da nicht wirklich eine genaue Struktur zu erkennen ist und im nachhinein erkennlich sein soll welcher Name zu welcher Adresse gehört funktioniert das laut einem Kollegen nicht mit meinem grep Script...

Ich hatte schon für dieses kleine Script ein ganzen Tag da ich Neuling bin und wäre sehr dankbar wenn mir jemand helfen könnte...

Vielleicht gibt es ja eine Lösung wie such mit regex oder sowas nach der E-Mail Adresse und geh dann zurück zum 1 Untertitel und nimm den Namen...

Huhn Hur Tu
23.01.14, 17:42
Koennte ungefhaer so aussehen


cat Datei.csv | grep -B 7 "@" | sed 's/\<p class\=\"\"*\"\"//g' | sed 's/<\/p>//g'

Da das aehnlich einer xml datei ist, wuerde ich mal nen XM Parser probieren

Gruss Stefan

Efraim
25.01.14, 05:37
Probiere mal den:

sed -n '/<td/,/<\/td>/{/Untertitel\|\@/p}' DEINEDATEI | sed 'N;s/\n/: /;s/<[^<>]*>//g;'Der Code versucht Namen und E-Mail zusammenzufassen.