使用bash脚本取消注释行

使用bash脚本取消注释行,bash,Bash,上面的行来自/etc/apt/sources.list。有多行。如何使用bash脚本取消以上两行的注释。您可以使用来替换# 我得说 sed -e "s/^# //g" /etc/apt/sources.list 而不是 sed -e "s/^# deb/deb/g" /etc/apt/sources.list 因为第二个sed命令将取消注释行,例如: sed -e "s/^# //g" /etc/apt/sources.list 这是可行的,但它将取消注释所有以#deb开头的行,这可

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

您可以使用来替换#

我得说

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

 sed -e "s/^# deb/deb/g" /etc/apt/sources.list
因为第二个sed命令将取消注释行,例如:

 sed -e "s/^# //g" /etc/apt/sources.list
这是可行的,但它将取消注释所有以
#deb
开头的行,这可能会打开对不想要或不需要访问的存储库的访问

相反,我建议将目标线定为:

  • deb
    开头但用
    注释掉的行,如下所示:
    #deb
  • 以及以
    合作伙伴
    结尾的行
  • 因此,我建议的Sed命令如下:

    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    
    带有
    -e
    命令的该命令将显示输出,但
    -i
    标志将在位编辑文件:

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

    在本例中,将其作为
    sudo
    运行,因为就地编辑需要
    sudo
    权限。

    只需对其进行一次mathc,因此您可以在sed命令中保留
    g
    。我不确定,但是我的sed通过使用附加的
    -I
    作为sed参数来接受就地更改。如果要保存原始文件,应该像
    sed-i.bak-e'..'文件名那样调用sed
    如果锚定到行首,则无需使用
    g
    选项—它只能匹配一次。
    sed -e "/^#.*deb.*partner$/s/^# //g" /etc/apt/sources.list
    
    sudo sed -i "/^#.*deb.*partner$/s/^# //g" /etc/apt/sources.list