Простое awk
альтернатива:
./runme.sh | awk '/ook/{print>>"ook.out"}/eek/{print>>"eek.out"}'
С небольшим дополнением awk
код может быть сделан легко расширяемым – просто вставленный в массив r, поскольку много пар выходного файла регулярного выражения необходимы:
./runme.sh | awk 'BEGIN{r["ook"]="ook.out";r["eek"]="eek.out"}{for(i in r)if($0~i)print>>r[i]}'
sed
w
команда эквивалентна из >
, печально нет никакого способа добавить в файл:
./runme.sh | sed -n $'/ook/wook.out\n/eek/week.out'
Оказывается материалом, я регистрировал использование logger
также выходился из системы к моему /var/log/mail.log
файл так или иначе. Я думаю, что это - becasue (на Debian так или иначе) конфигурация входа значения по умолчанию в /etc/rsyslog.conf
определяет журнал по умолчанию для почтового 'средства', чтобы быть, что файл mail.log и мой сценарий действительно регистрировались к почтовому 'средству'. Это, кажется, делает logger
зарегистрируйтесь и к mail.log и к системному журналу.
"Вручную откройте и добавьте" в контексте удара, довольно просто:
mycommand >> /var/log/mail.log
Стандартный вывод от mycommand
переходит к файлу. Если Вы помещаете это в начале сценария:
exec 1>&2&>> /var/log/mail.log
Стандартный вывод (1) и ошибка (2) для всего в остальной части сценария будет добавлен в файл.
Если Вы хотите первоначально усечь файл (т.е., не добавляют к существующему ранее содержанию), использовать >
вместо >>
.