2014-09-26 51 views
0

我有我想用一個bash腳本編輯一些配置文件(和腳本)編輯配置文件:如何用SED

. 
. 
. 
# ... foo ... 
foo 
. 
. 
. 

我用這個:

sed -i 's/foo/bar/' 

但按預期也會在評論行中編輯foo,我該如何防止?

+0

'的sed -i「/^*#/! s/foo/bar /''?它確保註釋行總是以'#'開始,沒有前導空格,你可以在'#'之前放置'*' – anishsane 2014-09-26 12:29:50

+0

@anishsane爲什麼不把它作爲答案發布? – 2014-09-26 12:32:28

回答

4

這應做到:

sed -i '/^ *#/! s/foo/bar/' filename 

解釋(除了原來的sed命令):

  1. s命令可以採取addresses
  2. /^ *#/暗示任何以*#開頭的行
  3. !之後的地址取消其效果。

因此,所有不以*#開頭的行都會受到影響。

1

另一種解決方案:

sed -i 's/\[^#\]foo/bar/g' filename 
2

您可以使用此也

sed '/^[^#]/s/foo/bar/g' file_name