当我用来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.
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
这会切断中间的线。
我知道可以-W
选择使其更宽,但线条比我的屏幕宽度长,所以这没有帮助。使用 simplediff
确实会使文本换行,但使用diff -y
.
那么如何使用diff -y
文字换行呢?
我正在 Mac 上使用终端,如果有帮助的话。
这似乎是一个简单的事情,但在到处搜索后我找不到解决方案!
答案1
如果丢失行号信息是可以的,并且您只是对视觉差异感兴趣,那么您可以fold
先对文件进行比较,然后再进行比较。
diff -y <(fold -s -w72 file1) <(fold -s -w72 file2) -W 200
在此命令中,我们使用进程替换首先将每个文件折叠为 72 个字符的行,但使用-s
选项我们确保仅在空格字符处断开行。
一旦行被折叠换行, diff 命令将在换行的输出上工作。
编辑:指定 -W 来比较 diff 的值大于折叠中给定的值将确保 diff 和折叠有足够的空间相互配合。在这种情况下 -W 200 被赋予 diff