이 명령을 사용하여 두 파일 간에 변경된 줄 수를 계산하려고 합니다.
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
이것은 나에게 효과적입니다