如何在Bash中对比两个rpm包名列表文件的内容是否一致
Bash下对比两个rpm包列表文件的实现方案
1. 直接对比(要求行顺序完全一致)
如果你的两个列表行排序规则一致,需要校验内容+顺序都完全相同,直接使用diff命令即可:
- 快速判断是否完全一致,不输出详细差异:
diff -q rpmlist.txt newlist.txt
执行后无任何输出代表两个文件内容完全一致;如果输出Files rpmlist.txt and newlist.txt differ则代表内容存在差异。 - 输出详细差异内容:
diff rpmlist.txt newlist.txt
针对你给出的示例文件,执行后输出结果如下:1c1
< bash-4.4-9.10.1_x86_64bash-5.4-9.10.1_x86_64
3c3
< bison-3.0.4-1.268_x86_64bison-6.0.4-1.268_x86_64
其中<开头的行是仅存在于rpmlist.txt的内容,>开头的行是仅存在于newlist.txt的内容
2. 忽略行顺序对比(仅校验内容集合是否一致)
如果两个列表的行顺序可能不同,只需要判断所有行的集合完全匹配,先对两个文件内容排序后再对比即可:
- 快速判断:
diff -q <(sort rpmlist.txt) <(sort newlist.txt) - 输出详细差异:
diff <(sort rpmlist.txt) <(sort newlist.txt)
3. 直观的并排差异展示
如果想要左右分栏更清晰地查看对应行的差异,使用sdiff命令:sdiff rpmlist.txt newlist.txt
针对示例文件的输出效果:
bash-4.4-9.10.1_x86_64 | bash-5.4-9.10.1_x86_64
binutils-2.32-7.8.1_x86_64 binutils-2.32-7.8.1_x86_64
bison-3.0.4-1.268_x86_64 | bison-6.0.4-1.268_x86_64
中间带|的行代表两个文件对应行内容存在差异,无特殊符号的行代表内容完全一致。
内容的提问来源于stack exchange,提问作者Siddharth
相关产品推荐
相关产品推荐

