我很抱歉...我的大脑冻结了,无法解决这个问题。我正在使用 sed 和模式空间,但我不断删除所有出现的包含模式的行。
我只想删除包含该模式的第一行,然后删除包含相同模式的另一行。
我正在使用的列表永远不会有超过两行包含相同模式的连续行
模式是“查询”
这是我的数据:
Query: A ANNUAL SERVICE FEE
SourceField: EXP-ANNUAL: SourceTable: MASTER
Query: A ANNUAL SERVICE FEE
Query: A Edie ACTIVE LNS
SourceField: LOAN-NO: SourceTable: MASTER
Query: A Edie ACTIVE LNS
SourceField: LO: SourceTable: MASTER
这就是我想要的样子:
Query: A ANNUAL SERVICE FEE
SourceField: EXP-ANNUAL: SourceTable: MASTER
Query: A Edie ACTIVE LNS
SourceField: LOAN-NO: SourceTable: MASTER
Query: A Edie ACTIVE LNS
SourceField: LO: SourceTable: MASTER
答案1
sed '/^Query/{N;/\nQuery/D;}' file
在以 开头的行上Query
,将下一行追加到模式空间。如果下一行以 开头Query
,则删除第一行。
为了避免打印最后一行(如果最后一行匹配^Query
):
sed -n '/^Query/{N;/\nQuery/D;};p' file