我试图用sed进行查找/替换和插入,但是我一直收到一条消息,上面写着“n命令末尾的额外字符”。我也不是从终端运行这个,它嵌入在一个shell脚本中,这样我就可以把它发送给其他人了。
这就是我想要运行的
sed -i 's/include "/var/run/racoon/*.conf" ;/# include "/var/run/racoon/*.conf" ;/g' ~/Documents/test.conf;
sed '$a; include "/etc/racoon/remote/*.conf" ;/g' ~/Documents/test.conf;为了让人更容易看到,我试着替换
include "/var/run/racoon/*.conf" ;使用
# include "/var/run/racoon/*.conf" ;然后加上这个
include "/etc/racoon/remote/*.conf" ;基本上,我只想注释掉文件的最后一行,然后在它后面插入一行。我对sed非常陌生,所以我不确定我是否做错了,任何帮助都会被感谢!
发布于 2013-08-20 19:49:02
如果有人遇到这个问题,您要么下载gnu-sed,要么通过其他方式进行下载。
您可以轻松下载gnu-sed,如果您已经安装了Homebrew。
brew install gnu-sed或者您可以像我一样使用perl和printf。
做替换
sudo perl -pi -e 's|include "/var/run/racoon/\*.conf" ;|# include "/var/run/racoon/*.conf" ;|g' /etc/racoon/racoon.conf;添加一行。对我来说永远是139号线,这样我就可以走这条路了。
line='include "/etc/racoon/remote/*.conf" ;'
sudo printf '%s\n' H 139i "$line" . wq | ed -s /etc/racoon/racoon.conf谢谢devnull帮助我正确的语法。
发布于 2013-08-20 17:48:48
你的尝试至少有两个问题:
/。您可以使用|。*需要转义,\*。因此,第一个表达式如下所示:
sed -i 's|include "/var/run/racoon/\*.conf" ;|# include "/var/run/racoon/*.conf" ;|g' ~/Documents/test.conf;同样,更改第二个。
https://stackoverflow.com/questions/18341365
复制相似问题