我有一些配置文件(和脚本),我想用bash脚本编辑:
.
.
.
# ... foo ...
foo
.
.
.
我用过这个:
sed -i 's/foo/bar/'
但正如预期的那样,它也会在评论行中编辑foo,我该如何防止这种情况?
答案 0 :(得分:4)
这应该这样做:
sed -i '/^ *#/! s/foo/bar/' filename
解释(除原始sed
命令外):
s
命令可以addresses。 /^ *#/
表示以*#
!
。因此,所有不以*#
开头的行都会受到影响。
答案 1 :(得分:2)
您也可以使用
sed '/^[^#]/s/foo/bar/g' file_name
答案 2 :(得分:1)
另一种解决方案:
sed -i 's/\[^#\]foo/bar/g' filename