2016-05-12 1429 views
0

我正在寻找一个sed命令来编辑Arch Linux镜像文件。该命令应搜索评论国名像#Germany并取消以下 注释行。sed命令来搜索一行并取消注释以下行

任何帮助表示赞赏。

例子:

前:

#Germany 
#hostA 
#hostB 
... 
#hostH 
#hostI 
... 
#hostZ 

后:

#Germany 
hostA 
hostB 
... 
hostH 
#hostI 
... 
#hostZ 
+1

类似请提供了文件中的几个示例性输入线与所述期望的输出一起。 –

+0

完成。根据要求添加示例。 –

回答

3

使用GNU sed,你可以这样做

gsed '/#Germany/,+4{/#Germany/ n; s/^#//}' 

$ cat test 
Some 
random 
stuff 

#Germany 
#1 
#2 
#3 
#4 

$ gsed '/#Germany/,+4{/#Germany/ n; s/^#//}' test 
Some 
random 
stuff 

#Germany 
1 
2 
3 
4 

它所做

  • '/#Germany/,+4这是一个地址图案。它匹配第一个#Germany和它后面的4行。如果匹配,则执行该模式的命令

  • /#Germany/ n;如果是国名,我们可能不会取代它。 n代表下一个,它读取缓冲区的下一行。

  • s/^#//替换#什么也没有。

2

awk

$ awk 'c&&c--{sub(/^#/,"")} /#Germany/{c=8} 1' file 
+0

我选择了* nullp01n73R *中的命令,因为问题询问** sed **。不管怎样,谢谢你。 –

+1

如果问题是“我怎样用螺丝刀开一个钉子?”,人们并不会打折“使用锤子”的答案,因为问题不在于锤子。 –