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

使用AWK删除文件中#start与#end之间的文本(含标记)

使用AWK删除指定标记区间的内容

问题说明

现有文件内容如下:

start of my file
Some lines
#start
other lines
blabla other lines
#end
end of my file

需要删除#start和#end之间的所有内容(包含这两个标记行),导出后的预期结果为:

start of my file
Some lines
end of my file

已知用awk '/#start/,/#end/'能选中区间内容,但不知道怎么实现删除;且要求必须用AWK完成,不接受sed方案。

解决方案

用下面这个带状态控制的AWK命令就能搞定:

awk '
/#start/ { skip=1; next }
/#end/ { skip=0; next }
!skip
' 你的输入文件名 > 输出文件名

命令解释

  • 碰到#start行时,设置skip变量为1(标记进入要删除的区间),并用next跳过当前行的输出
  • 碰到#end行时,把skip重置为0(标记退出删除区间),同样用next跳过当前行的输出
  • !skip的意思是:只有当skip为0的时候(也就是不在要删的区间里),才输出当前行

这个方法不管区间里有多少行都能准确处理,而且会把#start和#end本身也删掉,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:05:22