我想检查两个连续行中的两个模式,如果第二个模式与下一行匹配,则删除第一行

我想检查两个连续行中的两个模式,如果第二个模式与下一行匹配,则删除第一行

我想检查两个连续行中的两个模式(a1 和 a2),如果第二个模式(a2)在下一行中匹配,则删除第一行(具有模式 a1 的行)

输入

a1
b1
a1
a2
c1
c2
a1
b1
a1
a2

输出

a1
b1
a2
c1
c2
a1
b1
a2

答案1

使用sed,您可以执行一个N;P;D循环来一起处理两行,如下所示:

sed 'N;s/a1\na2/a2/;P;D'

答案2

会走多远

awk '/a1/ {T = $0; getline; if (!/a2/) print T} 1' file

我懂了?

相关内容