Sed替换线开始于空间&变量替换旁边的#字符

时间:2012-11-18 21:04:34

标签: sed

我在sed中有一点问题,我想替换以下行:

space here#Include "/usr/local/apache/conf/userdata/std/2/varr1/var2/*.conf"

space here# Include "/usr/local/apache/conf/userdata/std/2/varr1/varr2/*.conf"

(注意#之后的空格)

以下

Include "/usr/local/apache/conf/userdata/std/2/varr1/varr2/*.conf"

以下代码有效,行不以空格开头:

sed -i "s/# Include \"\/usr\/local\/apache\/conf\/userdata\/std\/2\/$varr1\/$varr2\/\*.conf\"/Include \"\/usr\/local\/apache\/conf\/userdata\/std\/2\/$varr1\/$varr2\/\*.conf\"/" file.name

任何帮助将不胜感激, 谢谢所有

2 个答案:

答案 0 :(得分:0)

您可以选择任意字符,而不是使用/作为分隔符。

以示例:

sed -i 's@@@g' file

所以,不需要在所有东西上添加反斜杠,这对于人类来说很难阅读。

最后,尝试这样做:

 sed -i 's@^ *# *Include \+"/usr/local/apache/conf/userdata/std/2/varr1/var\+2/\*\.conf"@Include "/usr/local/apache/conf/userdata/std/2/varr1/varr2/*.conf"@g' file.name

注意

  • *字符表示正则表达式中零或N次出现
  • ^字符表示行首
  • *& .是特殊字符,因此它们被反击。后来意味着任何单个字符

答案 1 :(得分:0)

您无需编写路径,只需捕获它:

sed -i 's!# *Include \("[^"]*"\)!Include \1!' input.file