使用sed忽略注释(#),但保持线条不变

dre*_*ard 10 regex shell sed

我有一个配置文件,我想基本上编辑未注释的行,但不是注释行.我正在使用sed.

例如,我有一个名为file.txt的文件:

test
# test
# test
test

我想用"TEST"替换"test",但不要触及注释行.最终输出应显示:

TEST
# test
# test
TEST

Sie*_*geX 20

sed '/^#/!s/test/TEST/g' /path/to/infile
Run Code Online (Sandbox Code Playgroud)

产量

$ sed '/^#/!s/test/TEST/g' infile
TEST
# test
# test
TEST
Run Code Online (Sandbox Code Playgroud)

*注意:如果您对评论的唯一要求是第一个非空白字符是a #,那么您可以使用:

sed '/^[[:space:]]*#/!s/test/TEST/g' /path/to/infile
Run Code Online (Sandbox Code Playgroud)

产量

$ sed '/^[[:space:]]*#/!s/test/TEST/g' infile
TEST
# test
 # test
TEST
Run Code Online (Sandbox Code Playgroud)