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

如何用Bash提取指定标记间内容?不使用awk

用Sed提取指定标记间内容的单行命令

别发愁啦!你之前用Sed没成功,应该是没处理好标记在同一行的情况,毕竟你要提取的是句子片段而非单个单词。针对你的需求,这里有个完美的单行命令:

假设你的文件名为your_file.txt,执行这条命令:

sed 's/.*\*\*\* Start copy here \*\*\*\(.*\)\*\*\* End copy here \*\*\*.*/\1/' your_file.txt

命令解释:

  • s/ 启动Sed的替换模式
  • .* 匹配开头到*** Start copy here ***之前的所有字符(包括前面的句子内容)
  • \*\*\* Start copy here \*\*\* 精确匹配你的开始标记(星号是正则特殊字符,必须用\转义)
  • \(.*\) 用转义括号捕获标记之间的目标内容(这部分就是我们要保留的)
  • \*\*\* End copy here \*\*\* 精确匹配结束标记
  • .* 匹配结束标记之后的所有剩余内容
  • /\1/ 把整行内容替换成我们捕获的那部分(\1代表第一个捕获组的内容)

运行这条命令后,就能得到你想要的输出:

the political bonds which have connected them with another, and to assume among the powers of

额外扩展:如果标记跨行怎么办?

要是以后遇到标记在不同行的情况,也可以用这条命令:

sed -n '/\*\*\* Start copy here \*\*\*/,/\*\*\* End copy here \*\*\*/{//!p}' your_file.txt
  • -n 让Sed默认不输出任何内容
  • /start/,/end/ 匹配从开始标记行到结束标记行的范围
  • {//!p} 对范围内的行,排除掉匹配开始/结束标记的行,只输出中间内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:04:24