我正在尝试区分文件,并确定它们是否相同,但忽略所有空格。
使用diff
时,-b
告诉diff
忽略给定行上的空格。该-B
选项告诉它忽略所有空行。但是,如果你有一行只包含空格,则-B
and-b
似乎不能一起工作。
我已经求助于使用该-I
选项,我希望 diff 忽略所有仅包含空格的行,当该行仅包含空格时效果很好,但\t
似乎与制表符不匹配。
我在网上找到了一篇参考资料,提到您需要使用 POSIX 正则表达式,但 POSIX 声明:blank:
将匹配任何空格(包括制表符)。那也不行。
这是我正在尝试做的一个示例。理想情况下,我的diff
台词会说明t1.txt
,t2.txt
并且t3.txt
都是一样的。
bash#> echo hi > t1.txt
bash#> echo hi > t2.txt
bash#> echo hi > t3.txt
bash#> echo " " >> t2.txt
bash#> echo -e "\t" >> t3.txt
bash#> diff -BbaNq -I "^[ \t]*$" t1.txt t2.txt
bash#> diff -BbaNq -I "^[ \t]*$" t1.txt t3.txt
Files t1.txt and t3.txt differ
bash#> diff -BbaNq -I "^[:blank:]*$" t1.txt t3.txt
Files t1.txt and t3.txt differ
bash#>
任何有关语法的帮助diff
都会非常有帮助。