You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWK仅当前一行匹配PATTERN1时删除匹配PATTERN2的行

AWK实现条件删除行方案

需求描述

仅当某行的前一行匹配模式PATTERN 1时,才删除当前匹配PATTERN 2的行,其余场景下匹配PATTERN 2的行正常保留。

实现命令

awk '!/PATTERN 2/ || !prev; {prev = /PATTERN 1/}' 输入文件

命令说明

  • 用变量prev记录上一行是否匹配PATTERN 1,初始默认值为假
  • 输出规则:满足以下任意一个条件就输出当前行:
    • 当前行不匹配PATTERN 2
    • 当前行匹配PATTERN 2,但上一行不匹配PATTERN 1
  • 只有当前行匹配PATTERN 2且上一行匹配PATTERN 1时,才会跳过输出(即删除该行)

效果验证

针对你给出的示例文本,执行上述命令后输出结果如下:

PATTERN 1
NNN
PATTERN 2
PATTERN 1
blabla
PATTERN 1
blabla
PATTERN 2
PATTERN 1

完全符合删除要求,所有前一行是PATTERN 1的PATTERN 2行都被删除,其余PATTERN 2行正常保留。如果需要适配自定义模式,直接替换命令中的PATTERN 1和PATTERN 2为你需要的正则表达式即可。

内容的提问来源于stack exchange,提问作者Kspael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:21:01