【问题标题】:linux bash sed search and replace with sed characterslinux bash sed 搜索并替换为 sed 字符
【发布时间】:2014-04-15 21:33:01
【问题描述】:

我正在尝试使用该行内的 sed 字符搜索并替换该行的文本。该行是一个文件路径,因此它有 /*.而不是它。我已经搜索并找到了 n\ 和反对 \ 但这些似乎都不起作用。不管我做错了什么,这很简单,但是我看不到穿过森林的树。

要编辑的数据:

Include conf.d/*.conf

我正在尝试编辑

conf.d/*.conf 
conf.d/vhosts/*.conf

Include 是文件中的其他位置,但这是唯一出现在第一个单词的地方。这是我目前所拥有的:

sed -i "/^Include/ s/\conf.d/*.conf\/ */\conf.d/vhosts/*.conf\/" /etc/httpd/conf/httpd.conf

我也试过了

sed -i "/^Include/ s/[conf.d/*.conf]/[conf.d/vhosts/*.conf]/g" /etc/httpd/conf/httpd.conf

这是标准的搜索错误信息:

Error Message: sed: -e expression #1, char 29: unknown option to `s'

我知道这很简单,但我似乎无法弄清楚。在过去的一个小时里,我一直坚持这一点。如果我能解决这个问题,那么我可以使用类似 sed 的字符来编辑 documentroot 和其他元素。

sed 版本 GNU sed 版本 4.2.1

【问题讨论】:

  • @tripleee 感谢您指出这一点。但是,如果可能的话,我正在尝试将其设为单行。我的目标是在 Include conf.d/*.conf 编辑 httpd.conf 文件,并将 conf.d 替换为用户输入。我无法通过搜索找到我想要的东西,所以我发布了这个问题。我是新手,还在学习这个社区的运作方式。

标签: bash sed filepath


【解决方案1】:
sed -i "s|conf.d/\*.conf|conf.d/vhosts/\*.conf|g" /path/to/file
  • 将分隔符更改为 |
  • 转义的星号

【讨论】:

  • 这很好用而且很简单,我可以使用旧路径名和新路径名示例: sed -i "/^Include/ s|$oldpathname*$oldextention|$newpathname*.$newextention| g" httpd.test 我也可以将它用于文档根目录和数百个其他应用程序。这很简单,而且很有效。谢谢。
猜你喜欢
  • 2011-08-16
  • 2019-08-07
  • 2018-06-06
  • 2011-08-16
  • 1970-01-01
  • 2011-08-15
  • 2014-09-13
  • 2021-06-21
  • 1970-01-01
相关资源
最近更新 更多