是否可以在并排差异输出中显示行号?

时间:2011-12-02 21:51:32

标签: diff

我使用带有-y--suppress-common-lines选项的差异,输出几乎完美,除了我想看到更改的行号。

示例:

文件1:

line a
line b
line c

file2的:

line a
line B
line c
line d

命令和输出:

$ diff -y --suppress-common-lines file1 file2
line b                                                        | line B
                                                              > line d

这种选项组合是否可以与diff结合使用,还是需要其他工具?

2 个答案:

答案 0 :(得分:9)

不幸的是-y选项在内部使用格式化样式(--LFMT-line-format也是如此),您无法使用-y累积格式化命令。 您无法从格式参数中获取-y所做的事情,因此您无法直接使用diff(我检查了差异3.2源代码)。

您需要使用其他工具。

答案 1 :(得分:0)

如果您总是使用相同的行号比较行,则可以使用以下内容:

$ awk 'NR==FNR{a[NR]=$0;next}{x=a[FNR];if($0!=x)printf("%s;%s;%s\n",FNR,x,$0)}' file1 file2
327;有る;ある
431;先ず;まず
543;連れて行く;連れていく
719;幾ら;いくら
1318;込む;混む
1415;かわいそう;可哀相
1713;だんだん;段々
2491;大みそか;大晦日
4120;もうける;儲ける
4510;ほほ笑む;微笑む
4512;もうかる;儲かる
5727;剥げる;剝げる
当awk处理第一个文件时,

FNR(记录的文件号)等于NRnext语句跳到下一条记录。