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

如何使用wdiff高亮两个文件的词汇差异并将不同词汇标红

如何使用wdiff标记两个文件的词汇差异(差异内容标红)

问题现状

当前使用如下脚本调用wdiff对比文件:

#! usr/bin/bash
wdiff -si12 exp3.txt out.txt | colordiff

执行输出如下:

Input an integer greater than or equal to 0 or -1 to quit: 
The largest number is 5
Goodbye!
exp3.txt: 6 words  39 100% common  0 0% deleted  0 0% changed
out.txt: 6 words  39 100% common  0 0% inserted  0 0% changed

目前仅能输出共有词汇、统计信息,无法将差异词汇标记为红色,查阅wdiff帮助参数未找到对应配置方法。


解决步骤

  1. 先修正基础问题
    • 你当前输出的统计信息显示两个文件100%词汇重合,不存在任何差异,这种情况下无论怎么配置都不会出现差异高亮。可以先修改其中一个文件的部分内容(比如把out.txt里的数字5改成6),制造可对比的差异再调试。
    • 脚本的shebang路径写法有误,正确写法应为#!/usr/bin/bash,开头缺少根路径斜杠,可能导致脚本执行异常。
  2. 配置差异标红(两种方案选其一即可)
    wdiff默认用[- 原文件独有内容 -]、{+ 新文件独有内容 +}的格式标记差异,colordiff默认不识别这种专属标记,所以直接管道给colordiff不会触发高亮。
    • 方案1:直接通过wdiff的自定义标记参数注入ANSI红色转义码,无需依赖colordiff
      wdiff -s \
        -w $'\033[31m[-' -x $'-]\033[0m' \
        -y $'\033[31m{+' -z $'+}\033[0m' \
        exp3.txt out.txt
      
      参数说明:
      • -w/-x:分别设置原文件独有(删除)内容的首尾包裹符,开头加ANSI红色转义序列\033[31m,结尾加颜色重置序列\033[0m,避免后续所有文本被染红
      • -y/-z:分别设置新文件独有(新增)内容的首尾包裹符,同样配置红色显示
        如果需要区分差异类型,比如删除内容显红、新增内容显绿,把-y/-z参数里的31改成绿色对应的色值32即可。
    • 方案2:让wdiff输出标准diff兼容格式,再交给colordiff识别高亮
      加-d参数让wdiff生成diff工具可识别的差异格式,colordiff就能正常解析高亮:
      wdiff -d -s exp3.txt out.txt | colordiff
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:39:32