diff
-I regexp
指定された正規表現に一致する行を挿入または削除するだけの変更を無視するオプションがあります。変更が2行の間にある場合(行を挿入または削除するのではなく)、これに類似したものが必要です。
たとえば、与えられた と に対して"abXd"
との間のようなすべての違いを無視したいと思います。"abYd"
X
Y
そんなdiff
能力はないようだ。に適した代替手段はありdiff
ますか?
2 つのファイルをフィルター処理して、sed
重要でない行を除外することができます。一般的なパターンは/regex1/,/regex2/ d
、2 つの正規表現に一致する行の間のすべてを削除することです。例えば:
diff <(sed '/abXd/,/abYd/d' file1) <(sed '/abXd/,/abYd/d' file2)
John Kugelman による以前のソリューションの改善:
diff <(sed 's/ab[XY]d/abd/g' file1) <(sed 's/ab[XY]d/abd/g' file2)
おそらくあなたが探しているものです!このバージョンは、行自体を削除することなく、各行の特定の変更を正規化します。これにより、diffは行に残っている他のすべての相違点を表示できます。
X と Y が単一の文字であると仮定すると-I 'ab[XY]d'
、私にとってはうまく機能します。