You need to enable JavaScript to run this app. 如何按日期行拆分RTF文件为对应日期命名的独立文档?
优惠活动
大模型
产品
解决方案
定价
更多

如何按日期行拆分RTF文件为对应日期命名的独立文档?

完全可以通过bash脚本实现你的RTF拆分需求

这种实现方式不需要依赖复杂的图形化工具,完全适配你提到的「每个日期块内容量不固定、文档存在前导空格/空行」的场景,不会像固定行数的split命令那样出现内容错分的问题。

核心实现逻辑

针对你的文档格式,脚本会按照以下规则完成拆分:

  • 以「带RTF加粗标记的YYYY-M-D格式日期行」作为唯一拆分边界
  • 自动忽略行首的前导空格、零散空行,不会因为格式杂讯误判拆分点
  • 拆分生成的每个独立RTF文件,会自动补上原文档的公共格式头部、末尾闭合标记,保证打开后和原文档内对应块的样式(加粗、超链接、文本格式)完全一致,不会出现乱码

可直接复用的新手友好脚本

将以下内容保存为同目录下的split_rtf.sh文件,脚本内加了逐行注释,不需要你掌握复杂语法也能直接用:

#!/bin/bash
# 接收用户输入的原RTF文件路径
INPUT_FILE=$1
# 提前提取原文档中、第一个日期行之前的所有公共RTF格式头
HEAD_CONTENT=$(awk '/\\b.*[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}/{exit} {print}' "$INPUT_FILE")
# 逐行遍历原文档
while IFS= read -r line; do
    # 预处理:去掉行首所有前导空格,方便匹配
    trimmed_line=$(echo "$line" | sed 's/^[[:space:]]*//')
    # 匹配带加粗标记的日期行:如果匹配到,就切换输出文件
    if echo "$trimmed_line" | grep -qE '\\b.*[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}|[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}.*\\b'; then
        # 提取行内的日期串作为文件名
        new_date=$(echo "$trimmed_line" | grep -oE '[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}')
        # 如果已经在写之前的文件,先给旧文件补RTF闭合标记
        if [ -n "$current_date" ]; then
            echo "}" >> "$current_date.rtf"
        fi
        # 更新当前的写入目标为新的日期
        current_date=$new_date
        # 新建对应日期的输出文件,先写入公共格式头
        echo "$HEAD_CONTENT" > "$current_date.rtf"
    fi
    # 如果当前已经定位到了某个日期块,就把原行内容追加到对应文件(保留原格式标记)
    if [ -n "$current_date" ]; then
        echo "$line" >> "$current_date.rtf"
    fi
done < "$INPUT_FILE"
# 给最后一个拆分的文件补上RTF闭合标记,保证所有文件可正常打开
if [ -n "$current_date" ]; then
    echo "}" >> "$current_date.rtf"
fi

新手操作步骤

  • 先给脚本加可执行权限:在终端输入chmod +x split_rtf.sh
  • 运行脚本,把你的原RTF文件名作为参数传入:比如原文件叫notes.rtf,就输入./split_rtf.sh notes.rtf
  • 运行完成后,当前目录下就会自动生成和每个日期对应的独立RTF文件,和你举例的「2020-11-15.rtf、2020-11-11.rtf」的预期效果完全一致。

注意事项

  • 第一次运行前建议备份原文档,避免操作失误导致内容丢失
  • 如果你的文档里日期分隔符是/而不是-,可以把脚本里正则匹配部分的-改成/,即可适配
  • 脚本会自动跳过原文档最开头没有归属到任何日期的零散空行、格式杂讯,不会生成无效的拆分文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 03:36:04