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

如何删除含,32,的行及其上方对应含,34,的行?

解决方案:删除包含,32,的行及其上方的,34,行

可以用以下sed命令实现需求,精准匹配并删除成对的,34,行和紧跟其后的,32,行:

sed '/,34,/{N;/\n.*,32,/d}' 源文件名 > 输出文件名

命令解释

  • /,34,/{...}:定位所有包含,34,的行,执行花括号内的逻辑
  • N:将当前行的下一行读入模式空间,把两行合并为一个整体(中间以换行符分隔)
  • /\n.*,32,/d:如果合并后的内容里存在换行符后跟,32,的情况,直接删除这一整组两行
  • 不满足条件的行会默认保留并输出

验证效果

用你的示例文件测试该命令,输出结果完全符合预期:

dd,34,dd 12:30 game2
dd,31,dd 12:32 game2 
dd,34,dd 13:54 game3
dd,31,dd 13:55 game3

之前命令的问题分析

  1. grep命令问题:
    grep -v -B1 ',32,' 逻辑上是先提取,32,行及其前一行,再反向排除这些行,但部分旧版本grep可能不支持-B(前向匹配)参数,或者实际文件中存在非成对的,34,行导致误判,可靠性不如sed方案。

  2. sed命令问题:
    你使用的sed "/\,32\/,+1d" 是删除,32,行及其下方一行,而需求是删除,32,行及其上方一行,方向完全搞反,因此得到错误输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:55:18