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

时间:2016-08-15 07:17:35

标签: file unix diff sdiff

场景是我有2个文件,我想使用以下命令并排分别编号:

diff -y file1.txt file2.txt

sdiff file1.txt file2.txt

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

更新

我想要文件本身存在的文件编号而不是管道生成的行号到cat -n等。让我们说,我正在使用“--suppress-common-l ines”做差异然后应省略行号,这些行号未在差异中显示。

5 个答案:

答案 0 :(得分:11)

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

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

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

diff -y file1 file2 | cat -n | grep -v -e '($'  

您还可以访问https://unix.stackexchange.com/questions/34874/diff-output-line-numbers以获取其他格式。

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

还有这个整洁的命令管道:

diff -y <file1> <file2> ... | less -N

这会为您提供一个less实例,并在每行的开头添加并排文件差异和行编号。

答案 3 :(得分:1)

sdiff -s <(cat -n file1.txt) <(cat -n file2.txt)

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

答案 4 :(得分:0)

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