如何使用 diff -y 使文本换行?

1 linux diff command line

当我用来diff -y比较两个具有长行文本的文本文件时,结果会截断每一列,并且我无法读取整行。我希望文本能够换行(或折叠,也称为折叠),以便我可以阅读整行。

例如,假设我有两个简单的文本文件,每行一行:

cat tmp.txt tmp2.txt
The quick brown fox jumped over the lazy dog. This line is very long and will not show when I use a diff. 
The quick brown fox did not jump over the lazy dog. This line is very long and will not show when I use a diff. 
Run Code Online (Sandbox Code Playgroud)

diff我得到了他们,

diff -y tmp.txt tmp2.txt
The quick brown fox jumped over the lazy dog. This line is ve | The quick brown fox did not jump over the lazy dog. This line
Run Code Online (Sandbox Code Playgroud)

这会切断中间的线。

我知道可以-W选择使其更宽,但线条比我的屏幕宽度长,所以这没有帮助。使用 simple 确实diff会使文本换行,但使用diff -y.

那么如何使用diff -y文字换行呢?

我正在 Mac 上使用终端,如果有帮助的话。

这似乎是一个简单的事情,但在到处寻找后我找不到解决方案!

ami*_*sax 5

如果丢失行号信息是可以的,并且您只是对视觉差异感兴趣,那么您可以fold先对文件进行比较,然后再进行比较。

diff -y <(fold -s -w72 file1) <(fold -s -w72 file2) -W 200
Run Code Online (Sandbox Code Playgroud)

在此命令中,我们使用进程替换首先将每个文件折叠为 72 个字符的行,但使用-s选项我们确保仅在空格字符处断开行。

一旦行被折叠换行, diff 命令将在换行的输出上工作。

编辑:指定 -W 来比较 diff 的值大于折叠中给定的值将确保 diff 和折叠有足够的空间相互配合。在这种情况下 -W 200 被赋予 diff