考虑输入:
=sec1= some-line some-other-line foo bar=baz =sec2= c=baz
如果我只想处理= sec1 =我可以例如注释掉该部分:
sed -e '/=sec1=/,/=[a-z]*=/s:^:#:' < input
…好吧,差不多。
这将对包括“= sec1 =”和“= sec2 =”行的行进行注释,结果将是:
#=sec1= #some-line #some-other-line # #foo #bar=baz # #=sec2= c=baz
我的问题是:从sed中的/ START /,/ END /范围中排除起始和结束行的最简单的方法是什么?
我知道,对于许多情况下,“s :::”爪的细化可以解决这个特定的情况,但我是在通用解决方案之后。
在“Sed – An Introduction and Tutorial”Bruce Barnett写道:“以后我会告诉你如何限制一个命令,但不包括包含指定模式的行”,但我不能找到他实际显示的地方。
在“USEFUL ONE-LINE SCRIPTS FOR SED”由Eric Pement编译,我只能找到包容性的例子:
# print section of file between two regular expressions (inclusive) sed -n '/Iowa/,/Montana/p' # case sensitive