unix diff--显示函数行截断输出

unix diff--显示函数行截断输出,unix,diff,truncate,Unix,Diff,Truncate,我正在区分一些ldif文件,其中每个部分都以“dn:leaf,branch3,branch2,branch1,root”开头。我希望显示每个部分的dn(可分辨名称),Unix diff实用程序有一个功能可以做到这一点:--show function line=regular expression。但是,diff util会截断输出中的dn行,这使得了解完整路径变得更加困难 当前命令: diff -U 0 --show-function-line="^dn\: .*" file1.ldif fil

我正在区分一些ldif文件,其中每个部分都以“dn:leaf,branch3,branch2,branch1,root”开头。我希望显示每个部分的dn(可分辨名称),Unix diff实用程序有一个功能可以做到这一点:--show function line=regular expression。但是,diff util会截断输出中的dn行,这使得了解完整路径变得更加困难

当前命令:

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
我希望整个原始行都包含在输出中。有办法做到这一点吗

谢谢,
Rusty

我通过编辑源代码并重新编译解决了这个问题

在src/context.c中:print_context_函数(FILE*out,char const*函数)

更改行:

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

for(j=i;j
“40”将输出的字符数限制为40个,因此我将其增加到100个,这应该足以满足我的需要。这个检查可能会被完全忽略,让它只检查函数[j]!='\不,但我决定保持原样

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