我正在尝试区分文件,并确定它们是否相同,但忽略所有空格。
使用diff
时,-b
告诉diff
忽略给定行上的空格。 -B
选项告诉它忽略所有空行。但是,如果您的行只包含空格,-B
和-b
似乎无法合作。
我已经使用了-I
选项,我希望diff忽略所有只包含空格的行,当行只包含空格时可以正常工作,但\t
没有似乎匹配制表符。
我在网上找到一个提到您需要使用POSIX regexp的参考,但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
语法的任何帮助都会非常有用。
答案 0 :(得分:0)
试试这个:
diff -wBt -u t1.txt t2.txt