2011-10-13 77 views
4
# deb http://archive.canonical.com/ubuntu lucid partner 
# deb-src http://archive.canonical.com/ubuntu lucid partner 

上面的行從/etc/apt/sources.list。有行數。如何用bash腳本取消2行以上的註釋。使用bash腳本的Uncoment行

回答

5

我想說

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

沒有必要,如果你錨定到行的開頭使用'g'選項 - - 它只能匹配一次。 –

1

您可以使用sed來代替#

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

只是想只有一次mathc,這樣你就可以在sed命令離開了'g'。我不確定,但我的sed通過使用額外的'-i'作爲sed參數來接受更改。如果要保存原始文件,你應該調用的sed像'SED -i.bak -e「....」 FileName' – f4m8

2

accepted answer from @m0ntassar的作品,但它會取消註釋所有線與# deb開始可能開闢進入倉庫一個不想要,或者需要訪問權限。

相反,我會建議目標是線:

  1. 線與deb開頭,但與一#這樣的註釋:# deb
  2. 具體端與partner線。

所以我建議的sed命令將如下所示:

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

,與-e Command命令會顯示你的輸出,但-i標誌將在地方編輯文件:

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

運行,作爲在這個例子中sudo因爲就地編輯需要sudo權利。