如何使用sed编辑配置文件

时间:2014-09-26 12:28:15

标签: regex bash sed edit

我有一些配置文件(和脚本),我想用bash脚本编辑:

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

我用过这个:

sed -i 's/foo/bar/'   

但正如预期的那样,它也会在评论行中编辑foo,我该如何防止这种情况?

3 个答案:

答案 0 :(得分:4)

这应该这样做:

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

解释(除原始sed命令外):

  1. s命令可以addresses
  2. /^ *#/表示以*#
  3. 开头的所有行 在地址否定其影响之后
  4. !
  5. 因此,所有不以*#开头的行都会受到影响。

答案 1 :(得分:2)

您也可以使用

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

答案 2 :(得分:1)

另一种解决方案:

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