差异与sed无法正常工作

时间:2017-02-14 12:14:18

标签: regex sed diff

我想在两个htmls之间找到区别。但是如果字符串中有一个名为my-attribute的属性,我想在计算diff时忽略my-attribute及其值。

我正在使用diff实用程序来获取文件之间的差异。

以下正则表达式在diff之外工作。

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

html1.html如下

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

但是在diff中,如果我使用相同的sed,它会给我一个语法错误

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

这会产生错误:意外令牌附近的语法错误`(&#39;

感谢任何帮助以使命令正确。

修改:添加html2.html

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

2 个答案:

答案 0 :(得分:2)

很少有人需要逃避。

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

适合我

答案 1 :(得分:0)

也许这可以解决您的问题:

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