sed + 删除单词匹配的行,并且仅当注释出现在行开头时

sed + 删除单词匹配的行,并且仅当注释出现在行开头时

删除与单词匹配的行很容易

例如,当我们想要删除与单词匹配的行时 -max.connections

sed '/max.connections/d' /home/conf.txt

但如何删除以下匹配行以及仅以注释开头的行

more  /home/conf.txt
#max.connections=438473
#   max.connections=438473
    # max.connections=438473
# max.connections=438473
max.connections=438473

注意 - 注释可以在开头或带有空格

预期输出示例

more  /home/conf.txt
max.connections=438473

答案1

艺术就是精心设计一个正则表达式来完全满足您的需求。在本例中,您想要匹配以 a 开头#、包含一些字符、然后是 的行max.connection。在正则表达式中,这将是

^                beginning of the line
#                The character '#'
.*               any character, may be repeated 0-infinity times
max.connections  This litteral text

或作为sed命令:

sed '/^#.*max.connections/d' /home/conf.txt

相关内容