Diff
Linux diff 命令,它是否丟棄換行符?
Linux 實現是否會
diff -w
丟棄\n
?我無權訪問 Linux 機器來檢查它。
-w
國旗的意思:-w --ignore-all-space Ignore all white space.
現在,這不是很清楚,因為“空白”實際上
\n
通常包括。例如,\s
Perl Compatible Regular Expressions 或 POSIX 中的類[[:space:]]
都匹配換行符:$ printf '\n' | grep -zqP '\s' && echo yes yes $ printf '\n' | grep -zq '[[:space:]]' && echo yes yes
但是,
diff
通過比較行和行的工作是由\n
字元定義的(實際上也是如此grep
,這就是我必須在-z
上面使用的原因)。因此,diff
不能\n
考慮因為 a\n
意味著這是一條不同的線路。所以不,該-w
選項不會導致diff
丟棄換行符,空行表示文件不匹配:$ printf 'foo\nbar\n' > file1 $ printf 'foo\n\nbar\n' > file2 $ diff -wq file1 file2 Files file1 and file2 differ
但是,由於行數,有一個選項確實會
diff
忽略更改:-B --ignore-blank-lines Ignore changes whose lines are all blank. $ diff -sB file1 file2 Files file1 and file2 are identical