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

sed匹配指定模式时输出匹配行前2行及到文件尾所有行的方法

sed 实现方案

直接执行以下命令即可得到目标输出:

sed '
1c<p>Output</p>
/^def/{
  x
  s/^\n//
  s/\(.*<code>\).*/\1/
  G
  p
  :loop
  n
  p
  b loop
}
H
d
' 你的输入文件路径

执行逻辑说明

  • 首行直接替换为要求的<p>Output</p>输出
  • 读取到以def开头的行之前,所有内容暂存到内存保持空间,不直接打印
  • 命中^def匹配行时,先取出暂存的前置内容做处理:
    • 删掉暂存内容开头多余的换行符
    • 把<code>标签后不需要的tyu内容移除,仅保留标签本身
    • 拼接当前匹配到的def行,此时内容刚好是匹配行前2行(空行、abc)+ 匹配行本身,连带标签一起打印
  • 命中匹配行后进入打印循环,逐行读取后续所有内容直接输出,直到文件末尾

纯文本场景适配:如果处理的是无HTML标签的纯文本内容,只需要把命令中s/\(.*<code>\).*/\1/这一行替换为s/^[^\n]*\n//即可,作用是删除暂存的最早一行无用内容,仅保留匹配行之前最近的2行内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:33:30