Я должен отправить письмо, если число в файле> имеет значение - PullRequest
0 голосов
/ 07 июня 2019

Я должен отправить письмо, если в текстовом файле есть значение> 20.

пример текстового файла

  • красный 10
  • коричневый 15
  • синий 21

Я должен отправить письмо, в котором сообщаю, что у синего более 21 попытки

Спасибо

1 Ответ

0 голосов
/ 07 июня 2019

со следующим:

 awk '
 BEGIN {XX="";
    print "Subject:...\nFrom:... <test@gmail.com>\nTo:test@gmail.com"
 } {
    if($2>20) {
         XX=$1;
         exit(0)
    }
 }  
 END {
    if(XX!="")printf("%s is over 21 attemps\015\n",XX)
 }' file.tmp > >(/usr/lib/sendmail -t test@gmail.com)

Раздел BEGIN записывает заголовок письма и инициализирует переменную XX (пусто).

if($2>20) перехватывает требуемое условие и, если оно истинно, изменяет значение XX, затем завершается

В разделе END записывается конец письма, если XX больше не пусто

Затем вы вкладываете это в команду, которая перенаправляет сообщение на sendmail, если что-то написано, и завершаете работу в другом случае:

{ awk 'BEGIN{XX="";print "Subject:...\nFrom:... <test@gmail.com>\nTo:test@gmail.com"} {if($2>20) {XX=$1;exit(0)}}  END{if(XX!=""){printf("%s is over 21 attemps\015\n",XX)}else{exit(1)} }' file.tmp || exit;} > >(/usr/lib/sendmail -t test@gmail.com)

Обратите внимание, что || exit активен, только если существует awk со значением> 0 (т. Е. С exit(1) раздела END)

Оригинальный пример на https://unix.stackexchange.com/questions/246863/awk-send-email-if

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...