2017-02-14 15 views
1

Ich versuche, den Unterschied zwischen zwei htmls zu bekommen. Aber wenn es ein Attribut namens my-attribute in der Zeichenfolge gibt, möchte ich mein-Attribut und seinen Wert bei der Berechnung von diff ignorieren.Diff mit sed funktioniert nicht

Ich benutze diff-Dienstprogramm, um Unterschiede zwischen Dateien zu erhalten.

Die folgende Regex funktioniert außerhalb Diff.

sed -E '[email protected](my-attribute)="[^"]*" @@g' html1.html 

html1.html ist als

<html> 
    <body> 
     <div> 
      <span my-attribute="8885" >html1</span> 
     </div> 
    </body> 
</html> 

Aber innerhalb diff folgt, Wenn ich die gleiche sed verwenden, ist es mir ein Syntaxfehler geben

bash -c 'diff -y <(sed -E '[email protected](my-attribute)="[^"]*" @@g' html1.html) <(sed -E '[email protected](my-attribute)="[^"]*" @@g' html2.html)' 

Das den Fehler verursacht: Syntaxfehler in der Nähe von unerwartetem Token `('

Würde mich über jede Hilfe freuen, um den Befehl richtig zu bekommen.

Edit: Hinzufügen html2.html

<html> 
    <body> 
     <div> 
      <span my-attribute="123" >html2</span> 
     </div> 
    </body> 
</html> 
+0

@Inian hinzugefügt html2.html – ConfusionPrevails

Antwort

2

paar Zeichen zu entkommen müssen.

bash -c "diff -y <(sed -E '[email protected](my-attribute)=\"[^\"]*\" @@g' html1.html) <(sed -E '[email protected](my-attribute)=\"[^\"]*\" @@g' html2.html)" 

Werke für mich

+0

Dank Karthick, das hat funktioniert !! :) – ConfusionPrevails

0

Vielleicht kann dies Ihr Problem lösen:

$ cat html1.html | grep -v my-attribute > /tmp/tmp1 
$ cat html2.html | grep -v my-attribute > /tmp/tmp2 
$ diff /tmp/tmp1 /tmp/tmp2 
+0

Meine Forderung ist das Attribut my-Attribut und seine wert- In diesem Fall my-Attribut = "123" und my-Attribut zu ignorieren = "8885". Das diff sollte nur html1 & html2 haben – ConfusionPrevails