Osx

有什麼方法可以更改 diff 命令輸出的選項卡大小?

  • April 29, 2019

我在 OSX 上執行這樣的diff命令,以創建並排輸出:

$] diff -Bbwy --width=200 --suppress-common-lines file1.txt file2.txt > diff-output.txt

它可以很好地輸出我的差異,但它使用製表符來縮進輸出(對齊並排的中線等)。此外,有問題的文件還在其中使用製表符進行縮進,因此差異輸出中包含所有這些製表符字元。

我希望輸出diff有空格,特別是 4 個空格而不是製表符。

我知道diff支持-t這樣做的選項,但問題是它對所有選項卡使用固定大小的 8 個空格(不僅是原始文件中的前導行縮進選項卡,還有它的對齊選項卡以保持中間線對齊, ETC)。

我嘗試了各種後處理方法來從diff輸出中獲取製表符(或空格)並將它們縮小到所需的 4 個空格大小,但這總是會導致diff並排輸出的錯誤對齊。

然後我想也許我可以預處理正在diff編輯的兩個文件,使用tab2space或類似的東西,以便在差異之前將每個文件的行縮進從製表符變為 4 個空格。但是我不知道如何在沒有臨時文件的情況下將這兩個預處理輸入通過管道傳輸到diff.

可以這樣做嗎?

或者還有其他我沒有嘗試過的方法嗎?有什麼秘密方法可以配置/強制diff -t只使用 4 個空格而不是 8 個製表符嗎?

差異 *(選項)* <(擴展-t4 file1.txt)<(擴展-t4 file2.txt)

將輸入文件中的製表符擴展為空格,假設製表位每四列設置一次。將它與diff-t選項結合起來應該可以得到你想要的。

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