2

我正在尝试区分文件,并确定它们是否相同,但忽略所有空格。

使用diff时,-b告诉diff忽略给定行上的空格。该-B选项告诉它忽略所有空行。但是,如果你有一行只包含空格,则-Band-b似乎不能一起工作。

我已经求助于使用该-I选项,我希望 diff 忽略所有仅包含空格的行,当该行仅包含空格时效果很好,但\t似乎与制表符不匹配。

我在网上找到了一篇参考资料,提到您需要使用 POSIX 正则表达式,但 POSIX 声明:blank:将匹配任何空格(包括制表符)。那也不行。

这是我正在尝试做的一个示例。理想情况下,我的diff台词会说明t1.txtt2.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都会非常有帮助。

4

1 回答 1

0

尝试这个:

diff -wBt -u t1.txt t2.txt
于 2012-09-21T22:41:15.690 回答