я пытаюсь отобразить именованный канал в терминале с помощью этой команды:Piping хвост -f перерезать СЭД не производит никакого вывода
tail -f textFile | cut -d " " -f 3- | sed -e "s/a/g&g/"
По какой-то причине это не производит никакого вывода.
Это делает работу, как ожидается, если -f Удалено:
tail textFile | cut -d " " -f 3- | sed -e "s/a/g&g/"
или вырезать заявление удаляется:
tail -f textFile | sed -e "s/a/g&g/"
или СЭД заявление удаляется:
tail -f textFile | cut -d " " -f 3-
Только когда все эти три вещи находятся вместе, он внезапно не производит никакого выхода. Порядок sed и разреза не имеет значения. Все это затрудняет мне винить поведение буферизации ввода или вывода любой одной или пары этих программ.
Возможное решение для получения требуемой функциональности было бы структурой while read line
, но я хотел бы избежать инициализации команды для каждой строки, если это вообще возможно.
Предоставьте образцы строк из 'textFile', чтобы выяснить причину! – Inian
Это действительно неважно. В целях тестирования я использую текстовый файл с содержимым: 'aaaaaaaaaaaaaa \ n bbbbbbbbbbbbbbbb' – cyborgx7
Можете ли вы попробовать команду как' tail -f textFile | при чтении текста; do echo "$ text" | cut -d "" -f 3- | sed -e "s/a/g &g/; done'. Потому что, я думаю, это то, как 'tail' и' cut' обрабатывают свои выходные и входные потоки соответственно, я думаю! Поставит его как ответ, если он работает – Inian