Сам процесс должен назвать setuid (2). Необходимо также исследовать выполнение его внутри chroot (8), если Вы уже не. Насколько я знаю, нет никакого пути к корню для изменения uid другого процесса.
Если бы причина, Вы выполняете его как корень, состоит в том, чтобы связать порты, я предложил бы выполнить его как обычный пользователь на более высоком порте и использующий ipfw (8) на OS X к порту передачи 80/443/etc к более высокому порту:
http://support.crashplanpro.com/doku.php/recipe/forward_port_443_to_pro_server_on_mac_osx
Я не уверен, что Вы хотите, но awk может, вероятно, сделать это легко. Добавить дополнительную новую строку после каждого согласующего отрезка длинной линии:
tail -f production.log |
awk '/Processing|compatible;|Completed in / {print; print ""}'
Добавить новую строку между всеми блоками непоследовательных согласующих отрезков длинной линии:
tail -f production.log |
awk '
/Processing|compatible;|Completed in / {
if (NR == n+1) print "";
n = NR;
print;
}'
grep
отфильтрует пустые строки, так как они не соответствуют никакому шаблону. В случае пустые разделители строки появляются в исходном файле, через который можно позволить им пройти, добавив -e "^$"
.
Если те пустые строки не присутствуют в исходном файле, необходимо будет добавить их. Это - пример того, как сделать это:
tail -f production.log | grep -e … | sed 's/\(^Processing \)/\n\1/'
Править: если Вы хотите пустую строку после любого использования строки sed 's/$/\n/'
вместо этого. И конечно можно добавить как многие \n
как хотите.