2011-12-02 7 views
13

-y--suppress-common-linesオプションでdiffを使用していますが、変更の行番号を確認したい場合を除き、出力はほぼ完璧です。side-by-side diff出力に行番号を表示することはできますか?

例:

FILE1:

line a 
line b 
line c 

FILE2:

line a 
line B 
line c 
line d 

コマンドと出力:diffを持つ可能なオプションの組み合わせや、私がやるの

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

ですね別のツール?

答えて

9

残念ながら-yオプション(--LFMT-line-formatがするように)内部フォーマットスタイルを使用して、あなたは-yでコマンドをフォーマットする累積することはできません。 -yのフォーマットパラメータからは取得できませんので、diffで直接回避できません(diff 3.2ソースコードを確認しました)。

別のツールを使用する必要があります。

+0

私はこれについてかなり確信しましたが、確認していただきありがとうございます!今すぐ別のツールを見つける... –

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;剥げる;剝げる 

FNR(レコードのファイル番号)をawkは最初のファイルを処理しているときNRに等しいです。 nextステートメントは、次のレコードにスキップします。

関連する問題