Linux 命令速查
文本处理 man sdiff

sdiff

并排比较两个文件,并可交互式合并差异。

返回

补充说明

sdiff 是 GNU diffutils 中的工具,把两个文件按列并排显示,中间用 <、>、| 标出左侧独有、右侧独有和双方不同的行。它适合人工审阅配置变更,比统一的 diff 输出更直观。

使用 -o 文件 可以进入交互式合并:sdiff 逐段显示差异,等待输入 l(取左侧)、r(取右侧)、s(静默)、v(详细)、e(编辑)或 q(退出),最终写出合并结果。-s 可隐藏相同行,只看差异;-w 控制总宽度,-l 控制左栏宽度。

注意它按行比较,默认会忽略行尾空白差异需显式加选项;二进制文件应先确认再比较。合并前建议保留原文件副本,交互式输出不会自动备份。

语法

sdiff [选项] 文件1 文件2

选项

  • -o <文件>:交互式合并,结果写入指定文件
  • -s, --suppress-common-lines:不显示相同行
  • -w <列数>:设置输出总宽度
  • -l <列数>:设置左栏宽度
  • -i, --ignore-case:忽略大小写
  • -b, --ignore-space-change:忽略空白数量变化
  • -B, --ignore-blank-lines:忽略空行差异
  • -W:忽略所有空白
  • -t, --expand-tabs:把制表符展开为空格
  • -a, --text:按文本比较

实例

# 并排查看两个配置文件的差异
sdiff /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf

# 只显示不同的行
sdiff -s old.conf new.conf

# 宽屏下指定总宽度与左栏宽度
sdiff -w 160 -l 70 a.txt b.txt

# 交互式合并:按提示选择左侧或右侧
sdiff -o merged.conf old.conf new.conf

# 忽略大小写和空白差异
sdiff -i -b a.txt b.txt

# 与 diff 对照,确认改动范围
diff -u old.conf new.conf | less

参考链接