考虑输入:
=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 - 简介和教程”中,布鲁斯·巴内特写道:“稍后我将向您展示如何将命令限制在但不包括包含指定模式的行。”,但我无法找到他实际显示的位置这个。
在 Eric Pement 编译的“ USEFUL ONE-LINE SCRIPTS FOR SED ”中,我只能找到包含性的示例:
# print section of file between two regular expressions (inclusive)
sed -n '/Iowa/,/Montana/p' # case sensitive