gugus hat geschrieben: 27.04.2022 17:05:28
Ja, ich wollte an sich von Beginn an mit awk arbeiten, bin aber mit den vielen Optionen nicht schlau geworden.
Werde aber bei egrep bleiben da ich dann besser mit den input Dateien "spielen" kann.
Wahrscheinlich ist dir das noch nicht bewusst, aber awk kann das gleiche was egrep auch kann ... und das ist fuer dich auch nicht schwieriger. Hier mal ein paar Entsprechungen:
Wenn man in awk keine Bloecke mit geschweiften Klammern verwendet, dann gibt es einfach die jeweilige Zeile aus und verhaelt sich damit wie egrep.
Hier nochmal dein Befehl:
Code: Alles auswählen
egrep '(Datum|Messung)' Datei*.eml | awk '/Aktuelles Datum/{printf "%s;", $(NF-3)} /f_distanz/{print $NF}'
Das
im awk-Code macht genau das gleiche wie das
bei egrep. (Ich habe bloss das Wort ``Aktuelles'' hinzugefuegt, damit es genauer ist.)
Gleichermassen verhaelt es sich bei ``Messung'' und ``f_distanz'' ... ich habe mir hier die Freiheit genommen, den Wertenamen zu nehmen, weil ich dachte, dass das genauer treffend sein wird als das Wort ``Messung''.
In awk kann man dann aber an verschiedene REs unterschiedliche Operationen koppeln, in der Weise:
Wenn du statt den Punkten den Befehl `print' hinschreibst, dann wird die Zeile einfach ausgegeben. Du kannst an der Stelle aber auch andere Dinge tun, wie nur Teile der Zeile auszugeben (z.B. `print $3') oder die Anzahl der Woerter/Felder der Zeile ausgeben (`print NF') oder den Inhalt der Zeile veraendern (mit `sub()' bzw. `gsub()' identisch wie bei sed mit s///) oder Variablen setzen, Schleifen schreiben, usw.
Ich habe bei dem Befehl das viertletzte Feld (`$(NF-3)') bzw. das letzte Feld (`$NF') ausgegeben ... im ersten Fall mit `printf' ohne Newline und im zweiten Fall mit `print' mit.
Mit diesen Erklaerungen kommt der der awk-Befehl vielleicht gar nicht mehr so fremd vor und du erkennst die Naehe zu egrep, so dass du zukuenftig fliessend zwischen beiden hin und her wechseln kannst.