В обычном случае sed
может редактировать поток из другой команды просто с помощью конвейера:
./somecommand | sed 's/xx/yy/g'
Однако команда sed
, которую я использую, немного сложна. Ранее мне помогли оптимизировать sed
для конкретного варианта использования: Оптимизировать сценарий оболочки для нескольких замен sed
Конечным результатом было то, что для моего варианта использования следующая команда sed
была наиболее оптимальной:
./somecommand > file
sed -e 's/^/s|/; s/$/|g/;' replacement_list | sed -r -f - -i file
По сути, первая команда sed
создает список операций sed из файла с парами замен. Затем вторая команда sed
использует поток через конвейер и использует параметр -f
для обработки файла.
С тех пор ситуация немного изменилась, и теперь мне удалось заставить somecommand
выводить результаты в stdout
вместо записи в файл, но я не могу придумать способ правильно переписать приведенный выше набор команд. Часть сложности заключается в том, что вторая команда sed
уже использует поток из первой команды sed
.
Одна вещь, которую я пробовал, - это присвоить stdout
из somecommand
переменной и попытаться <<<
во второй команде sed
. Однако это не сработало.