场景是我有2个文件,我想要使用以下命令并排编号:
diff -y file1.txt file2.txt
和
sdiff file1.txt file2.txt
上面的命令只是打印并排差异,但不显示行号。有什么办法吗?我搜索了很多但找不到任何解决方案。我不能使用第三方工具FYI。任何人的天才想法?
更新:
我想要文件本身存在的文件号而不是管道生成的行号到cat -n等。让我们说,我正在使用“--suppress-common-l ines”做差异,那么行号应该省略它们没有在差异中显示。
下面的代码可以用来显示两个文件中的不常见字段,并排显示。
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获取不同的格式。
以下命令将显示前面带有file1.txt行号的并排输出,并删除相同的行。
sdiff -l file1.txt file2.txt | cat -n | grep -v -e '($'
还有这个整洁的命令管道:
diff -y <file1> <file2> ... | less -N
这将为您提供less
实例,并在每行的开头处并排文件diff和行编号。
sdiff -s <(cat -n file1.txt) <(cat -n file2.txt)
这为您提供了源文件中包含行号的并排输出。
我遇到了同样的问题,最后在fedora 28下使用了图形工具(漫反射)