2012-09-21 103 views
1

我想區分文件,並確定它們是否相同,但忽略所有空格。差異:忽略只有標籤的行

當使用diff時,-b告訴diff忽略給定行上的空白。 -B選項告訴它忽略所有空行。但是,如果您有一行只包含空格的行,則-B-b似乎不能一起工作。

我已經使用-I選項,我希望比較忽略所有隻包含空格的行,當行只包含空格時工作正常,但\t似乎不匹配製表符。

我在網上找到一篇提到你需要使用POSIX正則表達式的參考文獻,但POSIX指出:blank:將匹配任何空格(包括標籤)。那也行不通。

下面是我想要做的一個示例。理想情況下,我的diff系列會聲明t1.txt,t2.txtt3.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

試試這個:

diff -wBt -u t1.txt t2.txt 
+0

「-u」無關你的問題,我只是喜歡統一格式:) – Serge

+0

否 - 這是行不通的。它適用於t2(有空格),但不適用於t3,它具有選項卡。: – John

+0

添加't'開關 - 它會將選項卡擴展爲空格 – Serge