Daten für Datenbank mit grep extrahieren und umformen mit sed (GNU sed) 4.2.2

Sendungsdaten aus den Auftragsbestätigungen (EMails) extrahieren und für eine Tabellenkalkulation/Datenbank formatieren:

1. Die gewünschten EMails makieren und in einer Exportdatei (eml, txt) speichern.

2. Gewünschte Daten mit grep extrahieren.

grep -oh -e "Auftragsnummer: ..........." -e "Gesamtpreis:......EUR" -e "name=\"Paketschein_.*pdf"  myHermes*

grep Parameter:
-o

puttygen download

buy cheap kamagra oral jelly

, –only-matching zeigt nur den Teil einer Zeile, der zu MUSTER passt
-h, –no-filename unterdrückt die Ausgabe des vorangehenden Dateinamens
-e, –regexp=MUSTER MUSTER als regulären Ausdruck verwenden.

Ausgabe würde dann so aussehen:

Auftragsnummer(1)
Gesamtpreis(1)
Paketschein_.*pdf(1)
Auftragsnummer(2)
Gesamtpreis(2)
Paketschein_.*pdf(2)
.(x)
.(x)
.(x)

Um die Ausgabe in eine TAB oder Semikolon getrennte Liste zu überführen wird das Zeilenende mit sed ersetzt.

Zuerst jedes 3te Zeilenende mit einem temporären Zeichen das nicht vorkommt, dann alle Zeilenenden durch Semikolon ersetzen, dann alle Zeilenenden durch ein Leerzeichen und zum guter letzt das temporäre Zeichen (#) durch einen Zeilenumbruch. Die ganze Ausgabe umleiten in eine Datei.csv und fertig!

grep -oh -e "Auftragsnummer: ..........." -e "Gesamtpreis:......EUR" -e "name=\"Paketschein_.*pdf" myHermes* | sed -e '0~3s/$/#/g' -e 's/$/;/g'|sed -z 's/\n/ /g'|sed -e 's/#/\n/g'>Final.csv

sed Parameter:
-e skript, –expression=skript hängt `skript‘ an die auszuführenden Befehle an
-z, –null-data Zeilen durch NUL-Zeichen voneinander trennen

Links:

http://openbook.rheinwerk-verlag.de/shell_programmierung/shell_013_000.htm#Xxx999276
https://wiki.ubuntuusers.de/grep/
http://openbook.rheinwerk-verlag.de/shell_programmierung/shell_014_004.htm
https://wiki.ubuntuusers.de/sed/
https://www.gnu.org/software/sed/manual/sed.html#Multiple-commands-syntax
https://stackoverflow.com/questions/1251999/how-can-i-replace-a-newline-n-using-sed

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert