取消注释文件中的特定行

时间:2017-10-23 08:12:49

标签: linux shell unix

我有一个包含以下行的文件。

#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

1 个答案:

答案 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:"