我在 OSX 上运行diff
这样的命令来创建并排输出:
$] diff -Bbwy --width=200 --suppress-common-lines file1.txt file2.txt > diff-output.txt
它可以很好地输出我的差异,但它使用制表符来缩进输出(并排中线的对齐等)。此外,相关文件还使用制表符进行缩进,因此 diff 输出中包含所有这些制表符。
我希望 的输出diff
有空格,特别是 4 个空格而不是制表符。
我知道diff
支持-t
这样做的选项,但问题是它对所有选项卡使用 8 个空格的固定大小(不仅是原始文件中的前导行缩进选项卡,而且还有其对齐选项卡以保持中线对齐, ETC)。
我尝试了各种后处理方法来从输出中获取制表符(或空格)并将它们缩小到所需的 4 个空格的大小,但这总是会导致并排输出diff
的未对齐。diff
然后我想也许我可以预处理正在diff
编辑的两个文件,使用tab2space
或类似的东西,在比较之前将每个文件的行缩进从制表符变为 4 个空格。但我无法弄清楚如何在没有临时文件的情况下将这两个预处理输入通过管道传输到diff
.
可以吗?
或者还有其他我没有尝试过的方法吗?有什么秘密方法可以配置/强制diff -t
只使用 4 个空格制表符而不是 8 个吗?
答案1
差异 (选项) <(展开-t4文件1.txt)<(展开-t4文件2.txt)将输入文件中的制表符扩展为空格,假设每四列设置制表位。将此选项与
diff
's-t
选项结合起来应该可以得到你想要的。