文本对比工具 - 在线比较文本、配置和日志差异

在线按行对比两段文本、配置、日志或接口响应差异,适合排查版本变化、配置变更和调试输出差别。

功能特点

  • 按行比较左右两段文本,突出新增、删除和变更内容
  • 适合对比 JSON、YAML、SQL、日志和配置文件片段
  • 帮助快速定位接口响应、环境配置或文档内容的差异
  • 区分换行符、空格和 JSON 文本差异,不把文本相同直接等同于配置语义等价
  • 浏览器本地完成对比,适合临时排查敏感调试文本

使用方法

  1. 保留原始编码、换行和末尾换行,将两个版本分别粘贴到左右两侧
  2. 查看逐行差异,先区分空白变化,再定位字段值、类型和结构变化
  3. 对 JSON/YAML 等配置继续用对应解析器验证,再复制差异结论用于评审和记录

示例输入

  • 配置文件版本差异

    旧版:timeout: 30
    新版:timeout: 60
    新版新增:retry: 2

    适合发布前检查环境变量、YAML、Docker Compose 或 Nginx 配置的实际变更。

  • 空格与换行差异

    左侧:{"name":"Alice"}
    右侧:{ "name": "Alice" }

    适合判断差异来自空格、换行、缩进,还是字段值真的发生了变化。

  • JSON 响应差异

    旧响应:{"status":"ok","items":[] }
    新响应:{"status":"ok","items":[{"id":1}]}
    

    适合对比接口发布前后的字段、默认值和返回结构;结构化语义仍可继续用 JSON 工具验证。

  • 日志版本对比

    release-1:2026-07-21 10:00 200 /api/users
    release-2:2026-07-21 10:00 500 /api/users

    适合按时间窗口对比发布前后的错误模式,但不能替代日志聚合和指标查询。

  • 换行符与空白差异

    左侧:line one\nline two\n
    右侧:line one\r\nline two\r\n

    适合识别 LF/CRLF、文件末尾换行和空行造成的差异,避免把格式变化误判为业务改动。

  • JSON 语义差异

    左侧:{"enabled":true,"retries":3}
    右侧:{"enabled":"true","retries":"3"}

    适合提醒布尔值/数字与字符串的类型变化;文本差异之后仍需让 JSON 解析器和应用配置校验确认影响。

示例输出

  • 配置文件版本差异

    - timeout: 30
    + timeout: 60
    + retry: 2
  • 空格与换行差异

    仅空格不同;忽略空白时两侧 JSON 内容等价
  • JSON 响应差异

    - {"status":"ok","items":[] }
    + {"status":"ok","items":[{"id":1}]}
  • 日志版本对比

    - release-1:2026-07-21 10:00 200 /api/users
    + release-2:2026-07-21 10:00 500 /api/users
  • 换行符与空白差异

    差异:LF 与 CRLF、文件末尾换行和空行不同;业务文本未变化
  • JSON 语义差异

    差异:enabled 从布尔值 true 变为字符串 "true";retries 从数字 3 变为字符串 "3"

常见错误

  • 纯文本对比会把 JSON 字段顺序、缩进和换行当作差异,不能直接等同于结构化数据变化。
  • 两边文本的换行格式、文件末尾换行和 Tab/空格不同,可能造成整段看似变化。
  • 文本对比只显示差异,不理解权限、类型或配置语义;应用变更前仍要交给对应解析器和审核流程。
  • 日志没有先按时间、请求 ID 或版本筛选时,差异结果容易被无关日志淹没。
  • 对比前后配置时如果混入密钥、Token 或用户数据,结果可能被复制到记录或分享链接中。

适用场景

  • YAML / Docker 配置变更
  • JSON 接口响应对比
  • 发布前后日志分析
  • 代码或文档版本审查

实操检查

  • 核对变更、新增和相等行

    固定输入:左侧 name: Toolbox city: Shanghai active: true,右侧 name: Toolbox city: Beijing active: true role: admin;步骤:分别粘贴两侧并点击“对比文本”;预期结果:统计包含 equal 2、changed 1、added 1、removed 0,city 为 changed,role 为 added;失败判断:相等行数量不对、role 被标成 removed,或 city 没有形成 changed 行。

  • 核对 CRLF 归一和空输入

    固定输入:左侧使用 a\r\nb,右侧使用 a\nb;步骤:点击“对比文本”,再清空两侧并再次点击;预期结果:第一步只有两行 equal、没有 changed/added/removed,第二步 rows 为空且四项统计为 0;失败判断:仅 CRLF 与 LF 的差异被报告,或空输入保留旧的 rows/统计。

页面专属核验

使用前与操作中

  • 先明确这是逐行对比:实现只把 CRLF 归一为 LF,不做词级、字符级、JSON/YAML 语义或空白忽略比较;原文本和新文本的方向会影响 added/removed。
  • 用包含相同行、修改行、新增行、删除行和重复行的样本检查 LCS 对齐;页面的 changed 是相邻 removed 与 added 合并后的行级结果。
  • 比较配置、日志或接口响应前先确认换行、末尾空行和敏感字段是否应纳入差异;大文本还要关注 LCS 的内存和时间成本。

结果出来后

  • 示例中的 city 从 Shanghai 改为 Beijing、末尾新增 role 后,统计是否为 equal 2、changed 1、added 1、removed 0,并保留正确行号?
  • 左侧有 `alpha beta gamma`、右侧有 `alpha gamma` 时,beta 是否显示为左侧第 2 行 removed,而不是被标成 changed?
  • 输入仅换行风格不同或末尾多一个换行时,结果是否符合 CRLF 归一和 `split('\n')` 的实际边界,而不是凭视觉认为两段完全相同?

相关工具

  • JSON 工具:统一处理 JSON 格式化、校验、树形查看、Schema、CSV 转换、AI 响应分析和 JSON 修复
  • YAML 格式化:格式化、校验 YAML,并支持 YAML 与 JSON 互转
  • 代码格式化:统一格式化和轻量压缩 HTML、CSS、JavaScript 代码
  • AI 日志分析:分析 Nginx、Node.js、Java、Cloudflare 和 Docker 日志中的错误类型、时间线与排查方向

工具边界

  • 文本对比按字符或行判断,不理解 JSON、YAML、日志字段或业务语义。
  • 超大文件可能受浏览器内存和渲染性能影响。
  • 差异结果不能替代代码审查、配置验证和日志监控。

与相似工具的区别

  • 正则替换:文本对比只呈现两个版本的差异;正则替换会主动批量改写匹配内容,适合迁移但必须预览和回滚。

安全与兼容性

  • 对比计算在浏览器本地完成,适合处理尚未脱敏的配置;导出或截图仍可能泄露秘密。
  • 差异高亮不理解权限、编码或配置语义,应用生产变更前必须经过对应解析器和审核流程。

下一步排查

  1. 先统一换行、缩进和编码,再查看真正的内容差异。
  2. JSON/YAML 配置继续交给对应格式化和校验工具。
  3. 日志差异结合 HTTP 状态、时间戳、request ID 和 AI 日志分析确认根因。

常见问题

JSON 对比应该用文本对比还是 JSON Diff?

只关心原始文本排版时用文本对比;关心字段新增、删除和类型变化时,应使用 JSON 的结构化 Diff 功能。

为什么只改了换行却显示很多差异?

常见原因是 CRLF/LF、Tab/空格、文件末尾换行或整段缩进变化;先统一格式,再判断实际内容差异。

忽略空白后 JSON 一样就代表配置等价吗?

不代表。还要比较字段类型、默认值、数组顺序、重复键处理、环境变量替换和目标平台的配置语义;文本相同只说明输入字符一致。