首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在包含reg表达式的字符串上使用sed

在包含reg表达式的字符串上使用sed
EN

Stack Overflow用户
提问于 2013-08-20 17:26:43
回答 2查看 627关注 0票数 1

我试图用sed进行查找/替换和插入,但是我一直收到一条消息,上面写着“n命令末尾的额外字符”。我也不是从终端运行这个,它嵌入在一个shell脚本中,这样我就可以把它发送给其他人了。

这就是我想要运行的

代码语言:javascript
复制
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;

为了让人更容易看到,我试着替换

代码语言:javascript
复制
include "/var/run/racoon/*.conf" ;

使用

代码语言:javascript
复制
# include "/var/run/racoon/*.conf" ;

然后加上这个

代码语言:javascript
复制
include "/etc/racoon/remote/*.conf" ;

基本上,我只想注释掉文件的最后一行,然后在它后面插入一行。我对sed非常陌生,所以我不确定我是否做错了,任何帮助都会被感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-20 19:49:02

如果有人遇到这个问题,您要么下载gnu-sed,要么通过其他方式进行下载。

您可以轻松下载gnu-sed,如果您已经安装了Homebrew。

代码语言:javascript
复制
brew install gnu-sed

或者您可以像我一样使用perl和printf。

做替换

代码语言:javascript
复制
sudo perl -pi -e 's|include "/var/run/racoon/\*.conf" ;|# include "/var/run/racoon/*.conf" ;|g' /etc/racoon/racoon.conf;

添加一行。对我来说永远是139号线,这样我就可以走这条路了。

代码语言:javascript
复制
line='include "/etc/racoon/remote/*.conf" ;'
sudo printf '%s\n' H 139i "$line" . wq | ed -s /etc/racoon/racoon.conf

谢谢devnull帮助我正确的语法。

票数 1
EN

Stack Overflow用户

发布于 2013-08-20 17:48:48

你的尝试至少有两个问题:

  • 您需要使用不同的分隔符,因为您的模式和替换包含/。您可以使用|
  • 模式中的*需要转义,\*

因此,第一个表达式如下所示:

代码语言:javascript
复制
sed -i 's|include "/var/run/racoon/\*.conf" ;|# include "/var/run/racoon/*.conf" ;|g' ~/Documents/test.conf;

同样,更改第二个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18341365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档