如何在 unix 中并排显示行号?

How to display line numbers in side by side diff in unix?

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

diff -y file1.txt file2.txt

sdiff file1.txt file2.txt

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

更新:

我想要文件本身的文件编号,而不是通过管道传输到 cat -n 等生成的行号。可以说,我正在使用“--suppress-common- l‌ ines" 那么应该省略 diff 中没有显示的行号。

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

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

下面的代码将在输出中显示公共字段和行号。

diff -y file1 file2 | cat -n | grep -v -e '($'  
sdiff -s <(cat -n file1.txt) <(cat -n file2.txt)

这会为您提供来自 source 文件的 side-by-side 输出 line-numbers。

以下命令将显示 side-by-side 输出,前面加上行号 file1.txt 并删除相同的行。

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

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