두 개의 파일이 주어지면 총 줄 변경 횟수를 찾는 방법은 무엇입니까?

두 개의 파일이 주어지면 총 줄 변경 횟수를 찾는 방법은 무엇입니까?

이 명령을 사용하여 두 파일 간에 변경된 줄 수를 계산하려고 합니다.

diff -U 0 file1 file2 | grep ^@ | wc -l

이 명령의 문제점은 한 파일에 한 줄만 있고 다른 파일에 100줄이 있으면 출력이 여전히 1이라는 것입니다.

파일의 총 추가 줄 수를 포함하여 변경된 총 줄 수를 알려줄 수 있는 명령은 무엇입니까?

답변1

로 시작하는 줄을 찾으면 @발견된 변경 블록의 수를 알 수 있습니다 diff. 일반적으로 두 개 이상의 줄이 있습니다.

공교롭게도 차이에 대한 통계를 계산할 수 있는 도구가 있습니다 diffstat:(웹사이트,매뉴얼 페이지).

삽입 및 삭제 횟수:

$ diff -u test1 test2 | diffstat
 test2 |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

동일한 블록의 삽입과 삭제를 단일 "수정" 작업으로 결합합니다.

$ diff -u test1 test2 | diffstat -m
 test2 |    2 -!
 1 file changed, 1 deletion(-), 1 modification(!)

또한 이를 사용하여 diffstat -t수정된 행 수만 포함된 테이블 형식 출력을 얻을 수 있습니다.

테스트 파일:

$ cat test1
a
b
c
d
$ cat test2
a
x
d

답변2

Cat <file1> <file2> | sort | uniq | wc -l

이것은 나에게 효과적입니다

관련 정보