比较两个文件并在表格中显示linux shell脚本的差异

时间:2017-06-30 21:23:47

标签: linux bash shell unix redhat

我试图比较两个文件的差异,这两个文件是更新前后的软件包列表,并以易于阅读的形式显示。

基本上我的一些内容是这样的:

预更新:

2:tar-1.23-13.el6.x86_64/
tcp_wrappers-libs-7.6-57.el6.x86_64/
14:tcpdump-4.0.0-5.20090921gitdf3cb4.2.el6.x86_64/
3:traceroute-2.0.14-2.el6.x86_64/

发布更新:

2:tar-1.23-15.el6_8.x86_64/
tcp_wrappers-libs-7.6-57.el6.x86_64/
14:tcpdump-4.0.0-5.20090921gitdf3cb4.2.el6.x86_64/
3:traceroute-2.0.14-2.el6.x86_64/
samba-common-3.6.23-43.el6_9.x86_64/
samba-winbind-clients-3.6.23-43.el6_9.x86_64/
samba-winbind-3.6.23-43.el6_9.x86_64/

预期产出:

Pre-Update                |             Postupdate
2:tar-1.23-13.el6.x86_64/ | 2:tar-1.23-15.el6_8.x86_64/
(empty) | samba-common-3.6.23-43.el6_9.x86_64/
(empty) | samba-winbind-clients-3.6.23-43.el6_9.x86_64/
(empty) | samba-winbind-3.6.23-43.el6_9.x86_64/

基本上只在新文件下显示两个文件下的更新和添加内容。

我不介意其他显示方式,只要它的格式很好,就像oldpackagename - > newpackagename或沿着该路线的东西。

2 个答案:

答案 0 :(得分:1)

如果你想要很好的并排输出,你可以使用:

$ diff -y --suppress-common-lines file1.txt file2.txt

示例使用/输出

$ diff -y --suppress-common-lines file1.txt file2.txt
2:tar-1.23-13.el6.x86_64/                 | 2:tar-1.23-15.el6_8.x86_64/
                                          > samba-common-3.6.23-43.el6_9.x86_64/
                                          > samba-winbind-clients-3.6.23-43.el6_9.x86_64/
                                          > samba-winbind-3.6.23-43.el6_9.x86_64/

答案 1 :(得分:0)

使用一行代码找到了一种非常简单的方法:

echo "Pre-Upgrade | Post-Upgrade " > test.txt; diff -y --suppress-common-lines filea.txt fileb.txt >> test.txt

输出: enter image description here