차이점, 올바른 파일에서만 수정 된 줄 표시


24

파일이 a있고 에서 복제 된 이후 변경된 b행을 출력하고 싶습니다 . 수정 된 라인, 주변 컨텍스트, 차이 오프셋 마크가 없습니다.ba

쉘 스크립팅을 사용하여 어떻게 할 수 있습니까? (파이썬 / 펄 / PHP / ... 없음)

Sed와 awk는 수용 가능한 솔루션입니다.

현재 내가하고있는 일은 --suppress-common-lines와 diff -y이며 정규 표현식 역 참조를 사용하여 공백 뒤에 올바른 부분을 가져 오는 sed입니다. 더 좋은 방법이 있어야합니까?

펄 (금지 된)을 사용하여 다음과 같이합니다 :

diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'

답변:


34

GNU diffutils 패키지를 사용하면 diff파일 b에서 수정되거나 새로 삽입 된 행만 출력됩니다.

diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b

4
대단해 부끄러운 정보는 Texinfo에 묻히고 내가 읽고 있던 맨 페이지에는 힌트가 없습니다.
Robottinosino

6

옵션을 하나 더 추가해야합니다.

grep -vf file1 file2

이것은 줄을 정렬 할 필요가 없지만 grep은 더 많은 메모리를 사용하고 큰 파일의 경우 충돌 할 것이라고 생각합니다.
Sridhar Sarnobat

행이 복제 된 경우 작동하지 않음
Jayen

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.