unix diff --show-function-line截断输出

时间:2012-06-27 18:11:50

标签: unix diff truncate

我正在努力扩展一些ldif文件,其中每个部分以“dn:leaf,branch3,branch2,branch1,root”开头我想要显示每个部分的dn(可分辨名称)和Unix差异实用程序有一个功能: - show-function-line =正则表达式。但是,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

我希望整个原始行包含在输出中。有没有办法做到这一点?

谢谢, 生锈的

1 个答案:

答案 0 :(得分:2)

我通过编辑源代码并重新编译来解决它。

在src / context.c中:print_context_function(FILE * out,char const * function)

更改了行:

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',但我决定保留原样。