Diff

Linux diff 命令,它是否丟棄換行符?

  • December 14, 2018

Linux 實現是否會diff -w丟棄\n?我無權訪問 Linux 機器來檢查它。

-w國旗的意思

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

現在,這不是很清楚,因為“空白”實際上\n通常包括。例如,\sPerl 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

引用自:https://unix.stackexchange.com/questions/488005