2012-06-27 63 views
2

我正在努力差異一些ldif文件,其中每個部分以「dn:leaf,branch3,branch2,branch1,root」開頭我想要dn(可分辨名稱)爲每個部分顯示,並且Unix diff實用程序具有這樣的功能:--show-function-line =正則表達式。然而,diff util截斷了輸出中的dn行,這使得很難知道完整的路徑。unix diff - 顯示功能行截斷輸出

電流指令:

diff -U 0 --show-function-line="^dn\: .*" file1.ldif file2.ldif > deltas.txt 

示例輸出:

@@ -56 +56 @@ dn: administratorId=0,applicationName=pl 
-previousLoginTime: 20120619180751Z 
+previousLoginTime: 20120213173659Z 

原始DN:

dn: administratorId=0,applicationName=platform,nodeName=NODENAME 

我想整個原始線被包括在輸出中。有沒有辦法做到這一點?

感謝, 生鏽

回答

2

我通過編輯源代碼並重新編譯解決它。

在SRC/context.c:print_context_function(FILE *出來,字符常量*函數)

改變的線:

for (j = i; j < i + 40 && function[j] != '\n'; j++) 

for (j = i; j < i + 100 && function[j] != '\n'; j++) 

的 「40」 被限制字符數輸出到40,所以我增加到100,這應該足夠大,我的需要。該檢查可能完全可以省略,只要檢查函數[j]!='\ n',但我決定保持原樣。