在不修改原始文件的情况下区分文件,忽略空格和换行符

diff' ing files without modifying the original files ignoring whitespaces and newlines

我需要一个 bash 脚本,它涉及编写一个 diff 文件,我应该在其中看到两个文件中的更改而不修改它们,作为评估的一部分忽略空格、制表符和换行符其中一个项目。例如,

文件 1:

 00000001001010000101000000100000    #(add $t2,$t1,$t0(0x01285020))
 00000001100011010111000000100001    #(addu $t6, $t4, $t5(0x018d7021))  
 00000001001010000101000000100010    #(sub $t2,$t1,$t0(0x01285022))

文件2

 00000001001010000101000000100000    #(add $t2, $t1, $t0(0x01285020))
 00000001100011010111000000100001    #(addu $t6, $t4, $t5(0x018d7021))
 00000001001010000101000000100010    #(sub $t2, $t1, $t0(0x01285022))

两个文件相同,diff应该没有任何区别。我在尝试类似的东西,

$ diff <(file1 sed 's/\s+//g') <(file2 sed 's/\s+//g') >>log.txt
但它没有用。任何推理方面的帮助将不胜感激。我也在尝试使用 diff 的其他命令,即 -w,-B,-b 但其中 none 有效。
关于 All words in the line after '#' should be ignored 的任何想法,这对我正在处理的那个也很有效。

第一个查询的答案: 将 spaces 替换为单个 space 以使行看起来相似对于 diff。尝试添加 -E 标志以在 sed 中启用扩展正则表达式,这将识别 /s+ 因此以下内容对您有用(在此处修复 OP 的尝试)。要忽略 spaces 请以理想的方式使用 diff -w file1 file2 命令。

diff <(sed -E 's/\s+//g' file1) <(sed -E 's/\s+//g' file2)

第二个查询的答案: 根据 OP 的第二个查询忽略 # 中的所有内容,请尝试以下操作。

diff <(sed 's/#.*//' file1) <(sed 's/#.*//' file2)