42

场景是我有 2 个文件,我想使用以下命令和行号并排比较:

diff -y file1.txt file2.txt

sdiff file1.txt file2.txt

上面的命令只是打印并排差异,但不显示行号。有什么办法吗?我搜索了很多,但找不到任何解决方案。我不能使用第三方工具仅供参考。任何人的任何天才想法?

更新:

我想要文件本身的文件号,而不是通过管道生成的行号 cat -n 等。可以说,我正在使用“--suppress-common-l‌​ines”进行差异,那么行号应该是省略了差异中未显示的内容。

4

4 回答 4

28

下面的代码可用于并排显示两个文件中的不常见字段。

sdiff -l file1 file2 | cat -n | grep -v -e '($'  

下面的代码将在输出中显示常见字段以及行号。

diff -y file1 file2 | cat -n | grep -v -e '($'  
于 2016-08-16T04:28:31.140 回答
6

以下命令将显示并排输出,前面带有 file1.txt 的行号并删除了相同的行。

sdiff -l file1.txt file2.txt | cat -n | grep -v -e '($'
于 2017-01-26T10:09:31.710 回答
5
sdiff -s <(cat -n file1.txt) <(cat -n file2.txt)

这为您提供了与源文件中的行号并排的输出。

于 2017-01-17T22:28:58.917 回答
1

我遇到了同样的问题,最终在 fedora 28 下使用了图形工具(漫反射)

于 2019-04-29T05:14:13.620 回答