2

我正在区分一些 ldif 文件,其中每个部分都以“dn:leaf,branch3,branch2,branch1,root”开头我希望显示每个部分的 dn(可分辨名称),并且 Unix diff 实用程序有一个这样做的功能:--show-function-line=正则表达式。但是,diff 工具会截断输出中的 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

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

谢谢,生锈

4

1 回答 1

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,这应该足以满足我的需要。该检查可能会完全省略,让它只检查 function[j] != '\n',但我决定保持原样。

于 2012-06-27T20:06:44.700 回答