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

如何批量删除文件中以## Table开头至空行的文本块?

批量删除文件中以## Table开头至首个空行的内容

需求说明

需要对数百个文件执行操作:删除所有以## Table开头的行,以及该行之后直到第一个空行的所有内容,待删除内容的行数不固定。

失败的尝试

最初使用的sed命令无法满足需求:

sed -e '/^\s*[*#]/d'

该命令会删除所有以空白字符开头且后跟*或#的行,误删了不需要处理的内容(比如示例中的## Prerequisites),不符合预期。

可行解决方案

以下两个命令均可实现需求:

1. 使用sed命令

sed -i '' '/## Table/,/^$/d' 文件名
  • 逻辑:匹配从包含## Table的行开始,到第一个空行(^$)结束的区间,删除该区间内的所有内容。
  • 注意:macOS环境下sed的-i参数需要加空字符串作为后缀(避免生成备份文件);Linux环境可直接使用sed -i '/## Table/,/^$/d' 文件名。

2. 使用awk命令

awk '/^## Table/ {skip=1} NF==0 {skip=0} !skip' 文件名 > 新文件名
  • 逻辑:
    • 当匹配到以## Table开头的行时,设置标记skip=1(后续行跳过输出);
    • 当遇到空行(NF==0表示该行无字段)时,设置skip=0(恢复输出);
    • 最后只输出未被标记为跳过的行(!skip)。
  • 若要直接修改原文件,可结合临时文件实现:awk '/^## Table/ {skip=1} NF==0 {skip=0} !skip' 文件名 > tmp && mv tmp 文件名

示例验证

原文件text.txt内容:

Random text.

## Table of Contents
*   [Design System](#<b>Design-System</b>)
*   [Multisite Designs](#Multisite)
    *   [Recommended Changes Per Site](#mcetoc_123)
    *   [Recommended Consistent Elements Across Sites](#mcetoc_456)
*   [Templates v. Pages](#Templates-v-Pages)
*   [Layouts](#mcetoc_dfghj)
*   [Features](#Features)
    *   [Something](#mcetoc_khjvfsdfsd)
    *   [Feature](#mcetoc_dfwyduegwu)
    *   [See More Logic](#mcetoc_fdsfsdugfs)
*   [Advertising, and Print](#Advertising-and-Print)
*   [Images](#Images)
    *   [Featured Image)](#mcetoc_fghjk) 
*   [Videos](#Videos)
    *   [Video Art](#mcetoc_4567890)
*   [Author and Search Pages](#Author-Tag-and-Search-Pages)
*   [Accessibility](#Accessibility)

Then here is some text.

Here is more text!

## Prerequisites

执行命令后期望结果:

Random text.


Then here is some text.

Here is more text!

## Prerequisites

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:42:27