Предполагая оболочку с заменами процессов,>(...)
:
tail -f /var/log/syslog |
tee >(grep cron1 >CRON) |
tee >(grep cloud-init2 >CLOUD-INIT)
Это приведет к тому, что tail
создаст данные для первого tee
в конвейере. tee
будет дублировать данные и отправлять одну копию следующему tee
, а другую — в подстановку процесса. Эта замена процесса будет выполняться grep
для данных, поступающих из tee
, и результат будет отправлен в файл CRON
.
Последний этап конвейера будет работать аналогичным образом.
В оболочке, где подстановки процессов недоступны, например. Можно использовать /bin/sh
, awk
или sed
.
Сawk
:
tail -f /var/log/syslog |
awk '{ print }
/cron1/ { print >"CRON" }
/cloud-print/ { print >"CLOUD-INIT" }'
Сsed
(обратите внимание, что мы должны убедиться, что выходные файлы не существуют, поскольку команда w
в sed
всегда добавляет данные в файл):
rm -f CLOUD CLOUD-INIT
tail -f /var/log/syslog |
sed -e '/cloud/w CLOUD' \
-e '/cloud-print/w CLOUD-INIT'