问题描述
我有一个文件有多个相似的模式,每个模式都由前面几行的唯一标题分隔。
在此示例中,我只想在 pattern
之后匹配/替换 header3
字符串:
header1
a
b
pattern
c
header2
a
b
c
d
pattern
header3
a
pattern
b
c
d
在我的实际文件中,可能有任意数量的标题字符串,以及任意数量的行。因此,无法定义 header3
匹配之前或之后的行数。
(另外,这台机器没有可用的 gnu sed 二进制文件,所以这不是一个可以使用的选项。)
解决方法
我使用地址范围找到了我自己问题的答案:
sed -i -r '/header3/,/pattern/ s|pattern|replacement|' filename