我想在两个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>
答案 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