Linux 使用 diff 分栏对比文本差异

· Frytea · 5 分钟 · 技术笔记
Linux 使用 diff 分栏对比文本差异

首先看一下帮助文档:

$ diff --help  
用法:diff [选项]... 文件列表  
逐行比较<各文件>。  
  
长选项的必需参数也是相应短选项的必需参数。  
     --normal                  以正常的 diff 方式输出 (默认)  
 -q, --brief                   只有在文件不同时报告  
 -s, --report-identical-files  当两个一样时仍然显示结果  
 -c, -C NUM, --context[=NUM]   同时输出 NUM 行(默认为 3 行)的复制上下文内容  
 -u, -U 数量, --unified[=数量] 输出 <>(默认为 3)行一致化上下文  
 -e, --ed                      以 ed script 方式输出  
 -n, --rcs                     以 RCS diff 格式输出  
 -y, --side-by-side            以两栏的格式输出  
 -W, --width=数量              每行显示最多 <>(默认 130)个字符  
     --left-column             当有两行相同时只显示左边栏的一行  
     --suppress-common-lines   当有两行相同时不显示  
  
 -p, --show-c-function         显示每个变更位于哪个 C 函数中  
 -F, --show-function-line=正则 显示匹配给定<>表达式的最近一行  
     --label 标签              使用给定<>替代文件名和时间戳  
                                 (可以重复)  
  
 -t, --expand-tabs             将输出中的 tab 转换成空格  
 -T, --initial-tab             每行先加上 tab 字符,使 tab 字符可以对齐  
     --tabsize=数字           TAB 格的宽度,默认为 8 个打印列宽  
     --suppress-blank-empty    在空的输出行之前去除空白或制表符  
 -l, --paginate                将输出送至 “pr” 指令来分页  
  
 -r, --recursive                 连同所有子目录一起比较  
     --no-dereference            不要跟随符号链接  
 -N, --new-file                  不存在的文件以空文件方式处理  
     --unidirectional-new-file   若第一文件不存在,以空文件处理  
     --ignore-file-name-case     忽略文件名大小写的区别  
     --no-ignore-file-name-case  不忽略文件名大小写的区别  
 -x, --exclude=模式              排除匹配 <> 的文件  
 -X, --exclude-from=文件         排除所有匹配在<>中列出的模式的文件  
 -S, --starting-file=文件        当比较目录時,由<>开始比较  
     --from-file=文件1           将<文件1>和操作数中的所有文件/目录作比较;  
                                   <文件1>可以是目录  
     --to-file=文件2             将操作数中的所有文件/目录和<文件2>作比较;  
                                   <文件2>可以是目录  
  
 -i, --ignore-case               忽略文件内容大小写的区别  
 -E, --ignore-tab-expansion      忽略由制表符宽度造成的差异  
 -Z, --ignore-trailing-space     忽略每行末端的空格  
 -b, --ignore-space-change       忽略由空格数不同造成的差异  
 -w, --ignore-all-space

用的时候可以横排查看不同的地方:

$ diff pmxcfs.kylin.e pmxcfs.debian10.e -y -W 180

使用 -y 表示两列查看,使用 -W 设定宽度,这样就可以在终端里分栏查看文件差异:

2022110210198428d258fd9fcf77fbc.png

参考文献