파일이 있고 수정된 줄만 출력하고 싶습니다 . 주변 컨텍스트는 없고 diff 오프셋 마커는 없습니다 a
.b
b
a
쉘 스크립트를 사용하여 이 작업을 어떻게 수행할 수 있습니까? (Python/Perl/PHP/... 제외)
sed와 awk가 허용되는 솔루션입니다.
지금 내가 하고 있는 일은 --suppress-common-lines를 사용하여 diff -y를 수행하고 공백 뒤의 올바른 부분을 얻기 위해 정규식 역참조를 사용하여 sed를 수행하는 것입니다. 더 좋은 방법이 있어야 겠죠?
Perl(금지됨)을 사용하면 다음과 같이 할 수 있습니다:
diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'
답변1
GNU와 함께확산제이 패키지는 diff
파일 b에 수정되거나 새로 삽입된 줄만 출력합니다.
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b
답변2
옵션을 하나 더 추가해야 합니다.
grep -vf file1 file2
답변3
awk 'FNR==NR{old[$0];next};!($0 in old)' old.txt new.txt