CentOS使用sed不能正常插入新的文本行

时间:2018-02-08 01:34:21

标签: linux sed centos

我试图插入一行文字;

include /etc/nginx/sites-enabled/*;

在单词之后的下一行;

for more information.

在我的/etc/nginx/nginx.conf中使用以下命令

sudo sed '/for more information.'/a include /etc/nginx/sites-enabled/*;' /etc/nginx/nginx.conf

但是每次我运行它都会返回

>

我对这种东西不太好,所以我希望有人可以帮助我。

干杯,

2 个答案:

答案 0 :(得分:2)

删除第二个单引号。这是多余的:

sudo sed '/for more information./a include /etc/nginx/sites-enabled/*;' /etc/nginx/nginx.conf

此外,由于.匹配任何字符,并且您可能希望它只匹配一个句点,请将其转义为:

sudo sed '/for more information\./a include /etc/nginx/sites-enabled/*;' /etc/nginx/nginx.conf

或者这个:

sudo sed '/for more information[.]/a include /etc/nginx/sites-enabled/*;' /etc/nginx/nginx.conf

答案 1 :(得分:1)

您的'命令中存在虚假sed。相反,你需要:

sudo sed -i '/for more information./a include /etc/nginx/nginx.conf' \
/etc/nginx/nginx.conf

(请参阅Johns的答案,因为.如果有可能会转义,例如"for more information.stuff"在结束.之后有信息

,则应对其进行转义

您还应该添加-i选项来编辑/etc/nginx/nginx.conf