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

如何在shell中使用sed提取文本内1:与2:标识模式之间的内容

文本提取sed实现方案

适用场景:提取所有1:与紧接着的2:之间的文本内容

场景1:1:和2:分别位于不同行(和你提供的示例结构一致)

使用如下命令:

sed -n '/1:/,/2:/{s/.*1: *//; s/ *2:.*//; p}' 目标文件路径 | grep -v '^$'

命令说明:

  • -n 参数关闭sed默认输出,仅输出我们指定的内容
  • /1:/,/2:/ 匹配从包含1:的行到包含2:的行的全部内容范围
  • s/.*1: *// 把每一行里1:及前面的内容全部删除
  • s/ *2:.*// 把每一行里2:及后面的内容全部删除
  • p 打印处理后的行
  • 最后管道接grep -v '^$' 过滤掉处理后产生的空行
  • 如果是从管道输入内容,把命令里的目标文件路径替换为-即可

拿你给出的示例运行该命令,输出结果为:

通常长有浓密柔软皮毛、无吼叫能力的猫科哺乳动物:家猫;野猫 [syn: {cat}, {true cat}]
用九尾鞭抽打

场景2:1:和2:位于同一行

使用如下单行替换命令即可:

sed 's/.*1: *\(.*\) *2:.*/\1/' 目标文件路径

命令说明:通过正则捕获组直接提取1:和2:中间的内容,输出捕获到的分组内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:45:10