bash: grep nach heutigem Datum im Script

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
joshi
Beiträge: 134
Registriert: 10.08.2005 02:54:33
Lizenz eigener Beiträge: GNU General Public License

bash: grep nach heutigem Datum im Script

Beitrag von joshi » 25.07.2017 18:04:16

Hallo Kollegen,

ich habe ein Script, welches mir die unzustellbaren Mailadressen aus der mail.log raussucht und dann per Mail täglich verschickt. Das funktioniert auch soweit ganz gut.
Jetzt möchte ich das Script noch um ein grep nach dem heutigen Datum erweitern, sodass ich meine täglichen Mails nur mit den Fehlern des aktuellen Tages, nicht die des ganzen Files, ausgeliefert werden.

Hier mal der Schnipsel, um den es geht:

Code: Alles auswählen

#!/bin/bash
RESULT=$(grep "domain name not found" /var/log/mail.log|grep "Jul 25"|awk '{print $7})
Ich möchte das "Jul 25" jetzt durch das aktuelle Datum ersetzen und hab mir sowas gedacht:

Code: Alles auswählen

#!/bin/bash

monat=$(date | awk '{m=$2; print m}')
tag=$(date | awk '{t=$3; print t}')
heute=$monat" "$tag

RESULT=$(grep "domain name not found" /var/log/mail.log|grep $heute|awk '{print $7})
Doch egal, was ich probiere, entweder ist $heute leer, oder wird so ersetzt, dass grep zwei Parameter erhält (Jul und 25, da Leerzeichen usw...). Ich plage mich jetzt schon seit knapp 2h damit. Hardcoded funktionierts, aber das bringt mir im cronjob nix.

Hat von euch jemand einen Tip?

LG und Danke
Johannes

TomL

Re: bash: grep nach heutigem Datum im Script

Beitrag von TomL » 25.07.2017 18:17:11

Code: Alles auswählen

echo $(date +%d.%m.%Y-%H:%M)
oder

Code: Alles auswählen

heute=$(date +%d.%m.%Y-%H:%M)
oder

Code: Alles auswählen

echo $(date +%m' '%d)
Die Ausgabe kannst Du Dir nun nach Bedarf umbasteln...

HTH

maroc

Re: bash: grep nach heutigem Datum im Script

Beitrag von maroc » 25.07.2017 18:42:29

Mit

Code: Alles auswählen

heute=$(date +%b' '%d)
erhältst Du, denke ich, das aktuelle Datum im gewünschten Format.
joshi hat geschrieben: ↑ zum Beitrag ↑
25.07.2017 18:04:16
[...] oder wird so ersetzt, dass grep zwei Parameter erhält (Jul und 25, da Leerzeichen usw...)
Variable quoten:

Code: Alles auswählen

... grep "$heute" ...

cosmac
Beiträge: 4573
Registriert: 28.03.2005 22:24:30

Re: bash: grep nach heutigem Datum im Script

Beitrag von cosmac » 25.07.2017 19:00:35

Vorteilhaft wäre noch LC_ALL=POSIX vor dem date. Die Monatsabkürzungen im mail.log sind doch wahrscheinlich in Englisch. Dann geht auch %b für den Monat. Für den Tag ist evt. %e günstiger, weil es den 1. bis 9. mit führendem Leerzeichen ausgibt; %d erzeugt eine führende Null.

Also:

Code: Alles auswählen

heute=$(LC_ALL=POSIX date "+%b %e")
... grep "$heute" ...
Beware of programmers who carry screwdrivers.

Antworten