2011-04-14 130 views
3

我要像「非貪婪」差異輸出?

- old line 1 
+ new line 1 
- old line 2 
+ new line 2 

一個diff輸出,而不是

- old line 1 
- old line 2 
+ new line 1 
+ new line 2 

有沒有辦法用GNU diff和/或其他標準的程序來做到這一點? --inhibit-hunk-merge看起來很有希望,但它似乎被棄用。

上下文:我比較兩個CSV文件,它們只有幾列不同。我想

  • 確保沒有其他列被更改
  • 比較修改過的字段逐個(所有行這些列更改)

的計劃是

  1. 轉置兩個CSV文件,使diff可以比較列
  2. diff並檢查輸出中的每一行

我可以使用並排差異,但由於每行很長,其中包含每行的每個值,這會對我的眼睛造成相當大的壓力。

回答

2

什麼是這樣的:

diff -y file1 file2 | perl -n -pe 's/(.*)\|\t(.*)/- $1\n+ $2/' 
+0

哇,多麼明顯!我仍然想知道爲什麼差異不支持逐行輸出,除了將它們全部組合在一起。 – ento 2011-04-15 00:18:05