linux - Senden Sie eine E-Mail, wobei der Text eine Textzeile aus einer Datei ist - abhängig vom Datum

400
Mike

Ich möchte eine cron-Aufgabe hinzufügen, die einmal täglich eine E-Mail an me@example.com sendet und je nach Datum eine Textzeile aus einer Datei als Nachrichtentext enthält.

Meine file.txt würde so aussehen:

10-16-18 green 10-17-18 brown 10-18-18 blue .... 10-01-20 purple 

Zum Beispiel ist das Datum 10-16-18. Ich bekomme eine E-Mail mit "braun" im Körper. Die Datei kann schließlich Hunderte von Zeilen enthalten.

1
10-16-18 hat "grün" in der Zeile, Sie möchten jedoch den Text in der nächsten Zeile darunter "braun" senden? Xen2050 vor 5 Jahren 0

1 Antwort auf die Frage

1
B. Morris

Dadurch wird die gewünschte Zeile aus der Datei gezogen und der Rest der Zeile zurückgegeben. Wenn mehr als eine Zeile übereinstimmt, werden alle gedruckt.

awk '$1 == "'`date '+%m-%d-%y'`'" { print substr($0, 10) }' file.txt | mail ...

Sie können sich auf das erste Spiel beschränken, indem Sie ;exitvor dem hinzufügen }.

Ist auch 10die Länge des Spiels; wenn Sie volles Jahr wollten können Sie die Änderung %yauf %Yund 10zu 12.

Um einen Cronjob für etwa 6:00 Uhr zu machen, würden Sie dies in Ihre Crontab eingeben:

0 6 * * * awk '$1 == "'`date '+%m-%d-%y'`'" { print substr($0, 10) }' file.txt | mail -s SUBJECT me@example.com

Dies war genau richtig, danke für eine schnelle und präzise Antwort. Mike vor 5 Jahren 0