1

Я хотел бы добавить задачу cron, которая отправляет электронное письмо на me@example.com один раз в день и содержит текстовую строку из файла в зависимости от даты в качестве тела сообщения.

Мой файл file.txt будет выглядеть так:

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

например, дата 10-16-18 я получаю письмо с "коричневым" в теле. Файл может в конечном итоге иметь сотни строк.

1 ответ1

1

Это вытянет нужную строку из файла и вернет остаток строки. Если совпадает более чем одна строка, он напечатает их все.

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

Вы можете ограничиться только первым соответствием, добавив ;exit до } .

Также 10 - длина матча; если вы хотели полный год, вы можете изменить %y на %Y и от 10 до 12 .

Итак, чтобы сделать работу cron, скажем, в 6:00 утра, вы должны поместить это в ваш crontab:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .