我使用带有-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结合使用,还是需要其他工具?
答案 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
(记录的文件号)等于NR
。 next
语句跳到下一条记录。