2013-10-30 245 views
-1

有人可以向我解釋什麼/#&/在這個命令中做了什麼? cat /etc/services | sed 's/.*/#&/' > services.tmpLinux Bash sed命令

+0

投票遷移到SU。 –

+1

您是否想過嘗試從您的主目錄中運行此操作?它會創建一個新的'services.tmp'文件,您可以檢查並且不必在此處發佈問題。 –

+0

@JimGarrison你有沒有想過我是Linux新手,我不知道這會做什麼,所以我想在我改變我的系統之前問一下。 – redf150flames

回答

2

它預先在每行都有一個#

+0

因此,它把每一個有文件名(.something)的行變成註釋? – redf150flames

+0

@ redf150flames否,'.'匹配單個字符,而不是字面點/句點。你應該閱讀有關正則表達式。另外,不要忘記,Linux中的文件名不需要包含句點。這是一個愚蠢的DOS思想,被卡住並擴散到現代Windows中。 – paddy

3

s///構造執行正則表達式替換。 任意字符.*的搜索結果爲零個或多個。替換爲#,然後是任何文本匹配。其效果是用#前綴輸出每行。

等效會是這樣:

sed 's/^/#/' 

上述匹配線(但不是任何字符)的開頭,並與#替換它。

在這兩種情況下,所有行(甚至是空行)都是匹配的。

+0

因此,簡單地說,它使每一行成爲評論? – redf150flames

+0

是的,因爲'/ etc/services'使用'#'作爲註釋令牌。如果你想避免將註釋加倍,你可以使用's/^ [^#] /#&/',它只在不以'#'開頭的行上進行替換。 – paddy