使用bash脚本取消注释行

时间:2011-10-13 07:58:33

标签: bash

# deb http://archive.canonical.com/ubuntu lucid partner
# deb-src http://archive.canonical.com/ubuntu lucid partner

来自/etc/apt/sources.list的行。有多行。如何使用bash脚本取消注释2行以上。

3 个答案:

答案 0 :(得分:6)

我会说

 sed -e "s/^# deb/deb/g" /etc/apt/sources.list

而不是

 sed -e "s/^# //g" /etc/apt/sources.list

因为第二个sed命令将取消注释这样的行:

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

答案 1 :(得分:2)

accepted answer from @m0ntassar有效,但它会取消注释以# deb开头的所有行,这些行可能会打开对您不希望或不需要访问的存储库的访问权限

相反,我建议定位以下行:

  1. deb开头但以#注释掉的行:# deb
  2. 具体partner结尾的行。
  3. 所以我建议的Sed命令如下:

    sed -e "/^#.*deb.*partner$/s/^# //g" /etc/apt/sources.list
    

    使用-e命令的命令会显示输出,但-i标志会编辑文件:

    sudo sed -i "/^#.*deb.*partner$/s/^# //g" /etc/apt/sources.list
    

    在此示例中将其作为sudo运行,因为在适当的位置编辑需要sudo权限。

答案 2 :(得分:1)

您可以使用sed替换#

 sed -e "s/^# //g" /etc/apt/sources.list