我有2个源文件,它们是同一个东西的不同版本.但是,有人通过一个不同的编辑器进行缩进更改,所以所有的行都显示出不同的差异.
是否有一个diff命令或我可以用来进行差异的过滤器,以便在忽略前导空格/制表符后输出只是不同的行?
Lev*_*sky 86
diff 有一些可能对您有用的选项:
-E, --ignore-tab-expansion
ignore changes due to tab expansion
-Z, --ignore-trailing-space
ignore white space at line end
-b, --ignore-space-change
ignore changes in the amount of white space
-w, --ignore-all-space
ignore all white space
-B, --ignore-blank-lines
ignore changes whose lines are all blank
Run Code Online (Sandbox Code Playgroud)
所以diff -w old new应该忽略所有空格,因此只报告截然不同的行.
diff -bB file[12]
Run Code Online (Sandbox Code Playgroud)
-b, --ignore-space-change
ignore changes in the amount of white space
-B, --ignore-blank-lines
ignore changes whose lines are all blank
Run Code Online (Sandbox Code Playgroud)
请注意,该-w选项将在比较之前忽略所有空格,因此每个文件中类似this i s a lineand 的行将this is a line进行比较thisisaline,并且不会报告差异。
除了-w选项问题之外,即使-b选项也有小问题,并且如果出现在行的开头,也不会忽略空格
因此,您应该sed首先删除开始时出现的那些空格,然后执行“diff -bB”。
diff -bB <(sed 's/^[ \t]*//' file1) <(sed 's/^[ \t]*//' file2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40607 次 |
| 最近记录: |