在不修改原始文件的情况下区分文件,忽略空格和换行符
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)
我需要一个 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)