Либо использовать 'Append' с >>
или использовать фигурные скобки, чтобы охватить переназначения ввода/вывода, или (иногда) использовать exec
:
ssh host tail -f /some/file | awk ..... > /some/file &
ssh host tail -f /some/file | grep .... >> /some/file &
или:
{
ssh host tail -f /some/file | awk ..... &
ssh host tail -f /some/file | grep .... &
} > /some/file
или:
exec > /some/file
ssh host tail -f /some/file | awk ..... &
ssh host tail -f /some/file | grep .... &
После exec
стандартный вывод сценария т в целом составляет /some/file
. Я редко использую эту технику; Вместо этого я обычно использую метод { ...; }
.
Примечание: вам нужно быть осторожным с обозначением скобок. То, что я показал, будет работать. Пытаясь сгладить его на одну строку, вам нужно обработать {
, как если бы это была команда (за которой следует пробел, например), а также для обработки }
, как если бы это была команда. У вас должен быть терминатор команд до }
. Я использовал новую строку, но &
для фона или ;
тоже будет работать.
Таким образом:
{ command1; command2; } >/some/file
{ command1 & command2 & } >/some/file
Я также не рассматривал вопрос о том, почему у вас есть два отдельных tail -f
операций, запущенных на одном удаленный файл и почему вы не используете awk
власти как супер- grep
, чтобы справиться с этим все в одном - я только обратился к поверхностному вопросу о том, как перенаправить ввод/вывод двух команд в один файл.
Имейте в виду, что если обе команды работают в фоновом режиме, вы не можете предсказать как вывод из двух команд будет чередоваться в '/ some/file'. – chepner