sed-工艺线两次或倒带

sed-工艺线两次或倒带,sed,Sed,我在两个模式之间编辑数据,遇到了一个问题,即sed无法匹配背对背的模式,因为第一个模式与第二个模式出现在同一行中 我的数据结构如下所示: sed '/PATTERN1/,/PATTERN2/ {s/DATA_[12]/SUB/g}' myFile 模式2标题模式1 数据 数据\u 1… 数据_2… 数据 模式2标题模式1 数据 数据\u 1… 数据_2… 数据 数据 数据 模式2 我的sed命令如下所示: sed '/PATTERN1/,/PATTERN2/ {s/DATA_[12]/SUB

我在两个模式之间编辑数据,遇到了一个问题,即sed无法匹配背对背的模式,因为第一个模式与第二个模式出现在同一行中

我的数据结构如下所示:

sed '/PATTERN1/,/PATTERN2/ {s/DATA_[12]/SUB/g}' myFile
模式2标题模式1
数据
数据\u 1
数据_2
数据
模式2标题模式1
数据
数据\u 1
数据_2
数据
数据
数据
模式2

我的sed命令如下所示:

sed '/PATTERN1/,/PATTERN2/ {s/DATA_[12]/SUB/g}' myFile
图案之间的行数是动态的,除了标题行中打印的内容外,没有其他可靠的图案可供搜索。标题行是数据块结尾的唯一指示符

“倒带”一行是否与“n”相反

谢谢

这可能适合您(GNU-sed):


这将使用遇到模式2时的转到来检查模式1。

将新行附加到缓冲区并应用更改,然后您可以通过考虑新行之前的部分来进一步处理前一行。-或者,将该行放在保留空间中,并在检查下一行时交换它……这是关于XML或JSON的吗?显示该示例输入的所需输出。替换工作正常,我的问题是,由于PATTERN1和PATTERN2发生在同一行上,PATTERN1出现的第二个位置被跳过,因为该行包含在第一个匹配中。我的意图是在模式1和模式2出现的任何地方执行替换<代码>sed'h/PATTERN1/,/PATTERN2/{s/DATA_u12]/SUB/g;x}'myFile第二次出现的内容仍然被跳过