2015-08-13 140 views
0

我想通過sed將日誌格式添加到Docker容器內的nginx.conf中。我發出以下命令:單引號內的sed轉義雙引號

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