2015-08-13 2 views
0

Я пытаюсь добавить формат журнала в nginx.conf внутри контейнера Docker через sed. Я запуская следующую команду:sed escape двойные кавычки в одинарных кавычках

sed -i -e"s/client_max_body_size 100M/client_max_body_size 100M;\n\tlog_format specialLog '$remote_addr forwarded for $http_x_real_ip - $remote_user [$time_local] ' 
                            '"$request" $status $body_bytes_sent ' 
                            '"$http_referer" "$http_user_agent"'/" /etc/nginx/nginx.conf 

Однако он дает мне следующую ошибку:

sed: -e expression #1, char 105: unterminated `s' command 

Как я могу избежать команду log_format?

+1

попробуйте это http://stackoverflow.com/a/206963/4258817 – Mousey

+0

Я копирую/мимо вашей команды, и это отлично работает для меня. Каковы ваши значения переменных? – hogren

+0

См. Здесь: https://unix.stackexchange.com/questions/168862/why-does-sed-outputs-char-53-unterminated-s-command У вас есть перерыв в вашей команде? Это может быть неправильно. –

ответ

0

Просто используйте AWK:

awk '1; /client_max_body_size 100M/{ print "some text" }' file 

Если вы редактируете ваш вопрос, чтобы показать некоторые входные выборки и ожидаемые результаты, мы можем показать вам, как именно заменить some text с реальным текстом.

Смежные вопросы