`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

파일을 수정하지 않고 차이점만 인쇄하는 경우 한 가지 옵션은 옵션이 있는 모든 공백을 무시하여 -w중괄호를 정상적으로 사용할 수 있도록 하는 것입니다.

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

물론 이 접근 방식은 공백에 다른 중요한 변경 사항이 없는 경우에만 작동합니다.

파일을 복구하는 것이 목적이라면 dos2unix유틸리티를 사용하는 것이 좋습니다.

관련 정보