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

编写SED命令:匹配到qrs时仅删除其上方对应的hij行

使用SED命令删除指定行上方紧邻的特定行

需求说明

给定原始文本:

abc
def
hij
klm
hij
nop
hij
qrs
tuv
wxyz

要求仅在检测到qrs行时,删除其上方紧邻的那一行hij,处理后得到目标文本:

abc
def
hij
klm
hij
nop
qrs
tuv
wxyz

实现的SED命令

sed '/qrs/{x;d;};x' input.txt

如果是通过管道读取文本(比如从标准输入传入),可以直接使用:

cat input.txt | sed '/qrs/{x;d;};x'

命令原理解释

  • x:SED的核心操作,用于**交换模式空间(当前正在处理的行)和保持空间(临时存储缓冲区)**的内容
  • /qrs/{x;d;}:当匹配到内容为qrs的行时,执行两个操作:
    1. x:交换保持空间和模式空间,此时保持空间中存储的正是qrs的上一行内容
    2. d:删除当前模式空间的内容(也就是刚交换过来的目标hij行)
  • 最后的x:对于所有非qrs的行,执行交换操作,把当前行存入保持空间,同时输出之前保持空间里存储的内容,确保正常输出所有不需要删除的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:45:55