You need to enable JavaScript to run this app. 如何在Notepad++中搜索连续数字序列并合并为起止数值对
优惠活动
大模型
产品
解决方案
定价
更多

如何在Notepad++中搜索连续数字序列并合并为起止数值对

连续帧序列合并实现方法

核心逻辑是判断相邻行的连续关系:前一行的第二个数值等于后一行的第一个数值时,两段属于同一连续序列,否则为新序列的起点。

方法1:Python脚本实现(适合需要二次开发的场景)

假设你的原始数据存放在cut_points.txt中,每行为一个帧号:帧号的序列,运行以下脚本即可直接输出合并后的结果:

# 初始化连续段的起止帧号
seg_start = None
seg_end = None

with open("cut_points.txt", "r", encoding="utf-8") as f:
    for raw_line in f:
        # 跳过空行
        line = raw_line.strip()
        if not line:
            continue
        cur_left, cur_right = map(int, line.split(":"))
        # 处理第一行数据
        if seg_start is None:
            seg_start = cur_left
            seg_end = cur_right
            continue
        # 判断当前行是否和上一段连续
        if cur_left == seg_end:
            seg_end = cur_right
        else:
            # 输出已结束的连续段
            print(f"{seg_start}:{seg_end}")
            # 初始化新的连续段
            seg_start = cur_left
            seg_end = cur_right
# 输出最后一个未处理的连续段
print(f"{seg_start}:{seg_end}")

如果需要直接保存结果到新文件,将print语句替换为文件写入操作即可。

方法2:AWK单行命令(适合终端快速处理)

直接在终端运行以下命令,即可直接将合并结果输出到merged_points.txt:

awk -F ':' '{if(NR==1){s=$1;e=$2}else{if($1==e){e=$2}else{print s":"e;s=$1;e=$2}}}END{print s":"e}' cut_points.txt > merged_points.txt

参数说明:

  • -F ':' 指定用冒号作为字段分隔符
  • NR为当前处理的行号,第一行初始化连续段的起始值s和结束值e
  • 后续每行判断当前行第一个字段是否等于上一段的结束值,是则更新结束值,否则输出上一段并开启新段
  • 遍历结束后输出最后一个连续段

两种方法都可以完美处理你给出的示例输入,输出结果为19068:19076。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 13:39:02