我正在寻找一个sed命令来编辑Arch Linux
镜像文件。此命令应搜索#注释的国家/地区名称,例如 #Germany ,并取消注释以下八个 #注释行。
感谢任何帮助。
示例:
之前:
#Germany
#hostA
#hostB
...
#hostH
#hostI
...
#hostZ
后:
#Germany
hostA
hostB
...
hostH
#hostI
...
#hostZ
答案 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/^#//
一无所获取代#
。
答案 1 :(得分:2)
在awk
$ awk 'c&&c--{sub(/^#/,"")} /#Germany/{c=8} 1' file