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

问题描述 投票:18回答:5

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

diff -y file1.txt file2.txt

sdiff file1.txt file2.txt

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

更新:

我想要文件本身存在的文件号而不是管道生成的行号到cat -n等。让我们说,我正在使用“--suppress-common-l ines”做差异,那么行号应该省略它们没有在差异中显示。

file unix diff sdiff
5个回答
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获取不同的格式。


2
投票

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

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

2
投票

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

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

这将为您提供less实例,并在每行的开头处并排文件diff和行编号。


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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.