Как установить пакет в контейнер Docker Ubuntu?

Вы должны добавить новую строку в команду sed(, а затем учесть, как оболочка обрабатывает экранированные символы новой строки):

 sed "/^\t\tkarmaServer.start/a\\
 \t\t\t\tflags: ['--no-sandbox']" build/unit-test.coffee 

Как сказано в руководстве GNU sed:

a \

text Append text, which has each embedded newline preceded by a backslash.

Это не очень понятно, неформатировано вот так. (При просмотре с помощью команды man, увы, не особо ясно. )Это говорит вам о том, что формат команды aвключает обратную косую черту, новую строку, а затем аргумент, обозначаемый текстом . Другими словами, все в этой колонке слева.

Как отмечалось в комментариях к вопросу, sedотличаются тем, как они обрабатывают неправильно сформированные команды. Spinellis sedвыдает ошибку, говоря вам, что у вас есть что-то кроме обязательной обратной косой черты, за которой следует перевод строки:

% sed "/^\t\tkarmaServer.start/a\t\t\t\tflags: ['--no-sandbox']" /dev/null
sed: 1: "/^\t\tkarmaServer.start...": extra characters after \ at the end of a command
%

Ваш конкретный выбор sed, по-видимому, просто рассматривает оставшуюся часть строки как аргумент text . Но первая обратная косая черта по-прежнему считается обязательной обратной косой чертой, которая должна следовать за a. Следовательно, в качестве аргумента text вы получите

t\t\t\tflags: ['--no-sandbox']

Обратите внимание на начальную tи на одну вкладку меньше, чем вы ожидали.

-4
28.03.2019, 09:07
0 ответов

Теги

Похожие вопросы