我在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
任何帮助将不胜感激, 谢谢所有
答案 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