2

2 つの xml ファイルの diff を実行したいのですが、2 ~ 3 行のパターンは無視します。

例: 以下の xml 形式を比較する際に、可用性と価格を無視したいとします。

これが私がこれまでに持っているものです:

diff -I '^<PRICE>*' 1.xml 2.xml

<CATALOG>

    <PLANT>  
    <COMMON>Bloodroot</COMMON>  
    <BOTANICAL>Sanguinaria canadensis</BOTANICAL>  
    <ZONE>4</ZONE>  
    <LIGHT>Mostly Shady</LIGHT>  
    <PRICE>$2.44</PRICE>  
    <AVAILABILITY>031599</AVAILABILITY>  
    </PLANT>  
</CATALOG>

上記の差分を使用すると、価格がスキップされますが、この正規表現に可用性を追加するにはどうすればよいですか?

4

2 に答える 2

6

-I をもう一度使用してみましたか?

これは私のために働く:

diff -I 'PRICE' -I 'AVAILABILITY' 1.xml 2.xml
于 2015-05-01T15:23:57.250 に答える
1

以下に示すように、ファイルを実行してgrep -v不要な行を削除し、次にdiffそれらを削除します。

diff <(grep -vE "^(<PRICE>|<AVAILABILITY>)" 1.xml) <(grep -vE "^(<PRICE>|<AVAILABILITY>)" 2.xml)

<(...)構文はプロセス置換と呼ばれます。シェルがサポートしていない場合は、次のような一時ファイルを使用する必要があります。

$ grep -vE "^(<PRICE>|<AVAILABILITY>)" 1.xml > 1.new.xml
$ grep -vE "^(<PRICE>|<AVAILABILITY>)" 2.xml > 2.new.xml
$ diff 1.new.xml 2.new.xml

diff -I複数のパターンで使用できるとは思いません。

于 2013-03-19T11:08:16.363 に答える