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

如何使用Bash提取文本文件中两个位置间的内容?

提取文件中两个标记间内容的实用方案

方法一:用sed快速提取

这是最直接的方式,适配大多数场景:

sed -n '/Location1/,/Location2/p' filename
  • -n 参数让sed只输出我们指定的行,避免冗余内容
  • /Location1/,/Location2/ 定义提取范围:从匹配到Location1的行开始,到匹配到Location2的行结束
  • p 表示打印这个范围内的所有行

如果Location2可能不存在,需要提取到文件末尾,用这个变种命令:

sed -n '/Location1/,$p' filename

方法二:用awk实现更灵活的提取

如果需要调整是否包含标记行本身,awk的可定制性更强:

awk '/Location1/{flag=1} flag; /Location2/{flag=0}' filename
  • 匹配到Location1时,设置标记flag=1,开始打印后续行
  • 匹配到Location2时,设置flag=0,停止打印
  • 这个命令会同时包含Location1和Location2所在的行

如果不想包含Location1行:

awk 'flag; /Location1/{flag=1}; /Location2/{flag=0}' filename

如果不想包含Location2行:

awk '/Location1/{flag=1}; flag && !/Location2/; /Location2/{flag=0}' filename

这两个工具都是系统自带的,无需额外安装,不管两个标记在文件开头、中间,还是行数不固定的情况都能完美处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:12:38