本文介绍了使用 sed 忽略注释 (#),但保持行不变的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

测试# 测试# 测试测试

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

测试# 测试# 测试测试
解决方案
sed '/^#/!s/test/TEST/g'/path/to/infile

输出

$ sed '/^#/!s/test/TEST/g' infile测试# 测试# 测试测试

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

sed '/^[[:space:]]*#/!s/test/TEST/g'/path/to/infile

输出

$ sed '/^[[:space:]]*#/!s/test/TEST/g' infile测试# 测试# 测试测试

I have a config file that I want to basically edit the uncommented lines, but not the commented lines. I'm using sed.

For example, I have a file called file.txt:

test
# test
# test
test

I want to replace "test" with "TEST" but do NOT touch the commented lines. Final output should show:

TEST
# test
# test
TEST
解决方案
sed '/^#/!s/test/TEST/g' /path/to/infile

Output

$ sed '/^#/!s/test/TEST/g' infile
TEST
# test
# test
TEST

*Note: If your only requirement for a comment is that the very first non-whitespace character is a #, then you can use:

sed '/^[[:space:]]*#/!s/test/TEST/g' /path/to/infile

Output

$ sed '/^[[:space:]]*#/!s/test/TEST/g' infile
TEST
# test
 # test
TEST

这篇关于使用 sed 忽略注释 (#),但保持行不变的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-25 03:27