sed - 处理线两次或倒带

时间:2015-07-02 19:26:08

标签: sed

我正在编辑两种模式之间的数据,而我遇到的问题是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'与“倒带”相反的一行?

谢谢!

1 个答案:

答案 0 :(得分:0)

这可能适合你(GNU sed):

sed ':a;/PATTERN1/{:b;s/DATA_[12]/SUB/g;n;/PATTERN2/!bb;ba}' file

这会在遇到PATTERN2时使用goto来检查PATTERN1。