sed-注释匹配行及其后的x行

sed-注释匹配行及其后的x行,sed,text-manipulation,Sed,Text Manipulation,我需要帮助使用sed注释匹配的行和它后面的4行。 在文本文件中 我的文本文件如下所示: [myprocess-a] property1=1 property2=2 property3=3 property4=4 [anotherprocess-b] property1=gffgg property3=gjdl property2=red property4=djfjf [myprocess-b] property1=1 property4=4 property2=2 property3=3

我需要帮助使用sed注释匹配的行和它后面的4行。 在文本文件中

我的文本文件如下所示:

[myprocess-a]
property1=1
property2=2
property3=3
property4=4

[anotherprocess-b]
property1=gffgg
property3=gjdl
property2=red
property4=djfjf

[myprocess-b]
property1=1
property4=4
property2=2
property3=3
我想在所有包含文本“[myprocess”的行和其后的4行中添加前缀# 预期产出:

#[myprocess-a]
#property1=1
#property2=2
#property3=3
#property4=4

[anotherprocess-b]
property1=gffgg
property3=gjdl
property2=red
property4=djfjf

#[myprocess-b]
#property1=1
#property4=4
#property2=2
#property3=3

非常感谢您在这方面的帮助。

您可以通过对一组行应用正则表达式来实现这一点:

sed -e '/myprocess/,+4 s/^/#/' 
这将匹配带有“myprocess”的行及其后面的4行。对于这4行,它将在行首插入“#”


(我认为这可能是一个GNU扩展-它不在我知道的任何“sed one-liner”备忘单中)

awk
中使用字符串连接和默认操作

或者如果块始终以空行结束

awk '/myprocess/{f=1} !NF{f=0} f{$0="#" $0} 1'  foo.txt

sed:-e表达式#1,char 12:unexpected','
:-(see的哪个版本?可能是旧版本或没有gnu扩展。sed 4.2.2。这是Debian默认值,因此,是的,可能缺少gnu扩展gnu文档:
awk '/myprocess/{f=1} f>5{f=0} f{f++; $0="#" $0} 1'  foo.txt
awk '/myprocess/{f=1} !NF{f=0} f{$0="#" $0} 1'  foo.txt