Как указал в комментарии steeldriver, вы можете просто добавить условие в оператор печати, чтобы оно печаталось только тогда, когда условие истинно:
awk -F: '$3 > 1000 { print $1 }' /etc/passwd
Здесь $3 > 1000
— условие. Awk также может читать файлы напрямую, поэтому вы можете избежать cat
и канала |
, указав имя файла непосредственно в awk, либо напрямую, как указано выше, либо с перенаправлением :
awk -F: '$3 > 1000 { print $1 }' < /etc/passwd
Посоветовавшись с коллегой, решение оказалось невероятно простым. Просто разделите сценарий на несколько частей. Поместите эти части в сценарий оболочки.
#!/bin/sh
# write truncated log to temp.log
command > temp.log 2>&1
# mail contents of truncated log
mail -s 'test' myemail@domain.com < temp.log
# append contents of truncated log to your primary log
cat temp.log >> mylog.log
Затем возьмите скрипт bash и запустите его в crontab
0 8 * * * bash mysh.sh