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

Bash中如何为两个文件的差异字符串添加颜色高亮显示

实现文件内容并排显示并高亮差异的方法

嘿,我有几个实用的方法帮你搞定这个需求——既能像你用pr那样并排显示两个文件的全部内容,又能把差异部分高亮成红色,一起来看看:

方案一:用sdiff(简单直接的懒人方案)

sdiff本身就是专门用来并排对比文件的工具,自带颜色高亮功能,直接跑下面的命令就行:

sdiff --color=always file1.txt file2.txt

它会自动把两侧不一样的内容用红色标出来,还会用|符号标记差异行,布局清晰,完全满足你的需求。

方案二:结合pr和awk自定义适配(贴合你原来的输出习惯)

如果你特别习惯pr -m -t的输出格式,那可以用awk来识别差异行并加上颜色标记,命令如下:

pr -m -t file1.txt file2.txt | awk '
    {
        # 按多个空格分割每行的左右两部分
        split($0, lineParts, /\s{2,}/)
        if (lineParts[1] != lineParts[2]) {
            # 给差异内容加上红色高亮的终端转义码,最后恢复默认颜色
            printf "\033[31m%s\033[0m\t\t\033[31m%s\033[0m\n", lineParts[1], lineParts[2]
        } else {
            # 内容一致就直接输出原行
            print $0
        }
    }
'

这个命令先通过pr生成你熟悉的并排布局,再用awk判断每行左右两段是否相同,不一样的部分就用终端红色高亮显示。

小提醒:

  • 终端颜色转义码在大多数现代终端(比如bash、zsh)都能正常工作,如果是Windows的CMD,可能需要先开启终端的ANSI颜色支持才能生效。
  • 如果你的pr输出里左右内容的分隔不是多个空格,可以调整awk里的分割规则,比如根据固定列数来拆分,适配你的实际输出情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:35:40