39

diff-I regexp指定された正規表現に一致する行を挿入または削除するだけの変更を無視するオプションがあります。変更が2行の間にある場合(行を挿入または削除するのではなく)、これに類似したものが必要です。

たとえば、与えられた と に対して"abXd"との間のようなすべての違いを無視したいと思います。"abYd"XY

そんなdiff能力はないようだ。に適した代替手段はありdiffますか?

4

5 に答える 5

29

2 つのファイルをフィルター処理して、sed重要でない行を除外することができます。一般的なパターンは/regex1/,/regex2/ d、2 つの正規表現に一致する行の間のすべてを削除することです。例えば:

diff <(sed '/abXd/,/abYd/d' file1) <(sed '/abXd/,/abYd/d' file2)
于 2010-12-13T23:06:43.383 に答える
23

John Kugelman による以前のソリューションの改善:

diff <(sed 's/ab[XY]d/abd/g' file1) <(sed 's/ab[XY]d/abd/g' file2)

おそらくあなたが探しているものです!このバージョンは、行自体を削除することなく、各行の特定の変更を正規化します。これにより、diffは行に残っている他のすべての相違点を表示できます。

于 2012-04-27T05:18:40.697 に答える
2

X と Y が単一の文字であると仮定すると-I 'ab[XY]d'、私にとってはうまく機能します。

于 2010-12-13T23:06:38.370 に答える