- Wie kann ich das BV am Ende der Nummer wegbekommen?
gibt mehrere Ansätze, hängt davon ab, wie die Struktur der Nr ist, je nachdem: man könnt's über die Länge des Strings lösen oder einfach alle Buchstaben per regex und gsub rauswerfen, scheint hier einfacher
- Die E-Mail-Adresse steht da jetzt zwei Mal, ich brauche nur eine davon...
ganz einfach: den print Befehl rausnehmen
- Wie kann ich dann aus vielen html-Dateien eine CSV-Liste machen? Ich nehme an, irgendwie so: ...
fast, Problem wenn man END benutzt, die Ausgabe erscheint erst am Ende des gesamten Durchlaufs, d.h. die von uns genutzen Variablen werden zwischendurch überschrieben.
Meillo hat schon eine Lösung mitgeliefert: man nimmt ein Array und speichert darin seine Ergebnisse zwischen, oder was ich oftmals netter finde: man nutzt ENDFILE, der Block wird immer dann abgearbeitet, wenn awk eine Eingabedatei durch hat
- Aber wie bekomm ich das dann in einer CSV-Ordnung mit zwei Spalten Nummer und E-Mail?
tausch den Doppelpunkt im END-Block gegen nen Semikolon
Code: Alles auswählen
awk -F"[<>]" '/MaStR/{for (i=NF; i>0; i--){ if (substr($i,0,3)=="SNB") { gsub("[^0-9]","",$i); nummer=$i} }} /tr class="detailstammdaten email"/{ for (i=NF; i>0; i--){ if (index($i,"@") != 0) { email = $i } }} ENDFILE{print nummer ";" email}' *.html
Beim nächsten mal erstmal selbst rum probieren und Deinen (auch Fehl-) Versuch posten. Dann kann man zeigen, wo es verbessert werden kann. awk ist ne echt schöne Sprache für solche Aufgaben, da lohnt sich das reinarbeiten. Und wenn man mal auf den Holzweg abbiegt, gibts hier sicher jemanden, der den Rückweg zeigen kann. Nur probieren musst selbst, vom andere-machen-lassen wirst Du das nicht lernen. Wär schade drum.