2

各セクションが「dn:leaf、branch3、branch2、branch1、root」で始まるいくつかのldifファイルの差分に取り組んでいます。各セクションのdn(識別名)を表示したいのですが、Unixのdiffユーティリティにはそのための機能:-show-function-line=regularexpression。ただし、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

元の行全体を出力に含めたいのですが。これを行う方法はありますか?

ありがとう、さびた

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 に答える