我正在编辑两种模式之间的数据,而我遇到的问题是sed无法匹配背靠背的模式,因为第一种模式与第二种模式在同一行中出现。
我的数据结构如下所示:
PATTERN2 标题 PATTERN1
数据
DATA_1 ...
DATA_2 ...
数据
PATTERN2 标题 PATTERN1
数据
DATA_1 ...
DATA_2 ...
数据
数据
数据
的 PATTERN2
...
,我的sed命令如下所示:
sed '/PATTERN1/,/PATTERN2/ {s/DATA_[12]/SUB/g}' myFile
模式之间的行数是动态的,除了标题行中打印的内容之外,没有其他可靠模式可供搜索。标题行是数据块结束的唯一指标。
是否有'n'与“倒带”相反的一行?
谢谢!
答案 0 :(得分:0)
这可能适合你(GNU sed):
sed ':a;/PATTERN1/{:b;s/DATA_[12]/SUB/g;n;/PATTERN2/!bb;ba}' file
这会在遇到PATTERN2时使用goto来检查PATTERN1。