Используйте cat
вместо команды, если хотите ее пропустить:
command=cat
if [[ $flag == true ]] ; then
command=pipe_command_b
fi
command \
| pipe_command_a \
| $command \
| pipe_command_c
Нет, вы не можете вставить точку в строку саму по себе, потому что это инструкция ed
остановить вставку текста; см. одну из ранних ed man-страниц(стр. 7):
Input mode is left by typing a period (.) alone at the beginning of a line.
Вы можете обойти это, не вводя точку саму по себе; например:Пробел.Введите , а затем .Введите , а затем s/^ //
. Вы можете использовать любой другой символ, кроме пробела, в качестве маркера, если вы соедините его в последующей команде s//
.
Точка не может быть вставлена сама по себе; при добавлении, изменении или вставке строки ed
вызывает функцию append_lines
; эта функция в buffer.c считывает ввод, разделенный символом новой строки (черезget_stdin_line
). В рамках этого он проверяет, является ли точка единственной вещью (помимо завершающей новой строки )в результате; ниже «ibufpp» — указатель на введенный текст, а «size» — длина этого буфера:
if( size == 2 && **ibufpp == '.' ) { *ibufpp += size; return true; }
Вы можете загрузить сжатые пакеты tar по адресу:http://download.savannah.gnu.org/releases/ed/или просмотреть страницу основной ветки Debian для ed или страницу OpenBSD для ed , где соответствующий код находится в main.c .
Другой вариант, обнаруженный в сообщении ed (1 )Conference в Твиттере , состоит в том, чтобы ввести любой другой одиночный символ, а затем заменить этот символ точкой :
. ]s/./.