使用 diff 比较文件时忽略除文本之外的所有内容?

Mar*_*ars 6 diff

对于文件比较命令diff,仅比较文本的文件比较需要哪些选项?

我的意思是我想忽略所有空格、制表符、换行符等。

我一直在尝试不同的选择,但未能达到预期的结果。

Fel*_*xJN 2

您可以预处理文件,然后比较流。例如用于tr删除所有空格和换行符。

diff <( tr -d ' \n' <file1 ) <( tr -d ' \n' <file2)
Run Code Online (Sandbox Code Playgroud)

示例文件是ab,它们共享文本但不共享空格和换行符位置:

cat a
1
2
3

cat b
1 2 3

diff -sq a b
Files a and b differ

diff -sq <( tr -d ' \n' <a ) <( tr -d ' \n' <b )
Files /dev/fd/63 and /dev/fd/62 are identical
Run Code Online (Sandbox Code Playgroud)

注意

  1. these words这在和之间没有区别th esew ord s
  2. 你必须特别注意要删除的字符
  3. diff的输出文件名是流名称而不是文件名

查看man tr特殊字符,例如制表符等(也许该[:space:]集最符合您的需求)