场景是我有2个文件,我想使用以下命令并排分别编号:
diff -y file1.txt file2.txt
和
sdiff file1.txt file2.txt
上面的命令只是打印并排差异,但不显示行号。有什么办法吗?我搜索了很多但找不到任何解决方案。我不能使用第三方工具FYI。 来自任何人的任何天才想法?
更新
我想要文件本身存在的文件编号而不是管道生成的行号到cat -n等。让我们说,我正在使用“--suppress-common-l ines”做差异然后应省略行号,这些行号未在差异中显示。
答案 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下使用了图形工具(漫反射)