@slm, я думаю, что было бы более разумно закрыть другой Q как обман, так как этот - более широкий случай.
Грэм
@ Грэм - я бы с тобой согласился, но у другого тоже есть твой ответ, хотя и не так хорошо написано. Некоторое слияние может быть более подходящим. Может быть, мы должны заручиться помощью мода, чтобы помочь с этими 2? Я пинг один об этом.
SLM
@slm, я думаю, что мы можем оставить это тому, кто проходит через близкую очередь и позволить толпе решать. Основное отличие, как я вижу, состоит в том, что другой Q - это особый случай, когда вам нужен только один конец канала.
Грэм
1
@Graeme - если мы не заправим насос на нем, то, скорее всего, ppl закроет новее для старшего как дупла.
SLM
Ответы:
11
Пакет moreutils имеет отличную команду для этого, называется vipe. Со страницы руководства:
SYNOPSIS
command1 | vipe | command2
DESCRIPTION
vipe allows you to run your editor in the middle of a unix pipeline and
edit the data that is being piped between programs. Your editor will have
the full data being piped from command1 loaded into it, and when you close
it, that data will be piped into command2.
По умолчанию используется editorкоманда, которая обычно является символической ссылкой на редактор командной строки по умолчанию. Вы можете изменить это, изменив ссылку (используйте update-alternativesв системах на основе Debian) или используя EDITORпеременную окружения. Например, вы могли бы сделать:
echo HelloWorld| EDITOR=nano vipe | less
В противном случае, если конкретный текстовый редактор не имеет поддержки для такого рода вещей, я думаю, что вы застряли с созданием временного файла вручную, записав файл в него, запустив редактор, введя файл в остальную часть конвейера и удаление временного файла. Команда в vipeосновном позаботится обо всем этом. Это хорошо, но команда редко доступна по умолчанию.
Текстовый редактор joe (он же редактор Joe's ) делает то, что вы хотите.
Команда echo "hello world" | joe - | lessработает как положено, хотя по какой-то причине ей нужны кавычки.
Некоторые команды (например, gpg) выводят вывод, который не попадает в канал. Это портит начальный экран внутри joe, но нажатие ctrl + r - refresh - очистит все.
Если все, что вам нужно, это заменить «Hello» на «Goodbye» (или любую другую замену слов), вы можете избежать ручного редактирования в редакторе в пользу инструмента автоматического поиска и замены. Например, «sed» может делать такие замены, как это:
echo HelloWorld| sed 's/Hello/Goodbye/'| less
Проверьте "man sed" для более подробной информации.
Ответы:
Пакет moreutils имеет отличную команду для этого, называется
vipe
. Со страницы руководства:По умолчанию используется
editor
команда, которая обычно является символической ссылкой на редактор командной строки по умолчанию. Вы можете изменить это, изменив ссылку (используйтеupdate-alternatives
в системах на основе Debian) или используяEDITOR
переменную окружения. Например, вы могли бы сделать:В противном случае, если конкретный текстовый редактор не имеет поддержки для такого рода вещей, я думаю, что вы застряли с созданием временного файла вручную, записав файл в него, запустив редактор, введя файл в остальную часть конвейера и удаление временного файла. Команда в
vipe
основном позаботится обо всем этом. Это хорошо, но команда редко доступна по умолчанию.источник
Текстовый редактор joe (он же редактор Joe's ) делает то, что вы хотите.
Команда
echo "hello world" | joe - | less
работает как положено, хотя по какой-то причине ей нужны кавычки.Некоторые команды (например, gpg) выводят вывод, который не попадает в канал. Это портит начальный экран внутри joe, но нажатие ctrl + r - refresh - очистит все.
источник
Если все, что вам нужно, это заменить «Hello» на «Goodbye» (или любую другую замену слов), вы можете избежать ручного редактирования в редакторе в пользу инструмента автоматического поиска и замены. Например, «sed» может делать такие замены, как это:
Проверьте "man sed" для более подробной информации.
источник