我有一个包含以下行的文件。
#LoadModule status_module "${PRODUCT_HOME}/modules/mod_status.so"
我希望一个sed
取消对上面的行进行注释,并使用一个命令对其进行注释。我尝试了下面的命令。
sed "/^#/LoadModule status_module "${PRODUCT_HOME}/modules/mod_status.so"/LoadModule status_module "${PRODUCT_HOME}/modules/mod_status.so"/g" file.txt
答案 0 :(得分:2)
一个问题是,"
和${PRODUCT_HOME}
之类的东西是由shell解释的。你必须正确地逃避它们,以便它们作为文字达到sed
。另外/
由sed
特别处理(以您使用它的方式),也必须进行转义。
我们将使用变量进行转义并使事情更容易阅读:
line='LoadModule status_module "${PRODUCT_HOME}/modules/mod_status.so"'
现在转到sed
命令。如果要替换某些内容,则语法为s/search/replace/
。字符串search
将替换为replace
。我们也可以写s/search/replace/
而不是s:search:replace:
,而是允许我们使用/
和search
文本中的replace
。
<强>取消注释强>
sed "s:#$line:$line:"
<强>注释强>
sed "s:$line:#$line:"