2010-11-10 127 views
0

由於某些原因,diff對預期的-w選項沒有響應;兩個文件,除了XML標頭末尾的單個新行外,兩個文件都是相同的。爲什麼差異顯示這兩個文件存在差異?

我調用DIFF與-w選項,例如:

diff -w old_file.xml new_file.xml 

# head -n4 old_file.xml

<?xml version="1.0" encoding="utf-8"?><survey audio_access_number="" custom="" name="test_conditionFormula" title="" type="CATI"><section id="1" loopover="None" notes="" startrecording="true" title="1"> 
    <page id="1_Q1" loopover="None" notes="" title="1_Q1"><question id="Q1" number="Q1" style="vertical" text="1" uid="94"> 
     <single id="single_409" number_response_columns="1" response_list="Q1_L1"/> 
     <instructions>Please select one</instructions> 

# head -n4 new_file.xml

<?xml version="1.0" encoding="utf-8"?> 
<survey audio_access_number="" custom="" name="test_conditionFormula" title="" type="CATI"><section id="1" loopover="None" notes="" startrecording="true" title="1"> 
    <page id="1_Q1" loopover="None" notes="" title="1_Q1"><question id="Q1" number="Q1" style="vertical" text="1" uid="94"> 
     <single id="single_409" number_response_columns="1" response_list="Q1_L1"/> 

爲什麼這些即將到來的不同,鑑於國旗差異?

回答

2

差異逐行比較。所以,一個換行符是不是一個線

-w

比較 行時忽略空格內的空格。

http://linux.die.net/man/1/diff

+0

我也試過'-w -B','-w --ignore-all-space','-w -b -B --ignore-all-space'以及其他任何你可以混用的想像。 – 2010-11-10 20:53:31

+0

是的,你不能用差異來做。差異逐行比較,並且您有一個文件,其中的行不同。你想要運行的實際測試是什麼?你可以連接所有行到一個,然後測試結果? (儘管'cmp'not'diff',因爲你有差異可能有行長限制) – 2010-11-10 20:54:59

0

從DIFF手冊:

-w --ignore-all-space 
       Ignore all white space. 

好像換行符不是空格。

如果這沒有幫助,請使用xxd檢查文件,其中一個文件可能包含UTF8標頭或一些類似的不可見二進制問題。