`diff -y file-{a,b} less`とDOS行の終わりを表示する問題

`diff -y file-{a,b} less`とDOS行の終わりを表示する問題

現在の仕事では、Windowsコンピュータ上のファイルを使って作業する必要があることがよくあります。ほとんどの場合、これは大きな問題ではありませんが、にパイプを並べて接続すると、見えるだけでなくインデントもdiff台無しになります。less^M、次のように:

<U+FEFF>using System;^M                                 <U+FEFF>using System;^M                                 
using System.Reflection;^M                                      using System.Reflection;^M                                      
using System.Runtime.Serializa^M                                        using System.Runtime.Serializa^M                                        
using System.Transactions;^M                                    using System.Transactions;^M                                    

(最初の行のUTF-8 BOMはその行にのみ影響するため、特に気にしません。)

私も作ることができることを知っています

diff -y <(tr -d '\015' <ファイル-a) <(tr -d '\015' <ファイル-b) |

しかし、これには多くのタイピングが必要であり、長いパスをfile-a共有するときにbashの中括弧をうまく使用できません。file-bそして

diff -y ファイル-{a,b} tr -d '\015' |

形式がめちゃくちゃなので目標を達成できませんでした。

しかし興味深いことに、以下は^Mすべてインデントの面で大丈夫です。

diff -y ファイル-{a,b} |ヘッダー

それで、私の質問は、上記の問題なく並列比較をどのようにlessにパイプすることができるかということです。 (私が知らないパラメータをdiffに追加するなど)

答え1

ファイルを変更せずに違いのみを印刷する場合、1つのオプションはオプションを含むすべてのスペースを無視して中-wかっこを正常に使用できるようにすることです。

diff -wy file-{a,b} | less

もちろん、このアプローチはスペースに他の重要な変更がない場合にのみ機能します。

ファイルを回復することが目的であれば、dos2unixユーティリティを使用することをお勧めします。

関連情報