Linux

[diff] 파일 내용 비교

비번변경 2022. 4. 18. 19:02

diff

리눅스 기본 명령어 중 하나로, 파일을 한 줄씩 비교하여 출력한다.

출력 값이 없으면 두 파일이 동일하다는 의미이다.

3개의 파일을 한 번에 비교하고 싶다면 diff3 명령을 사용할 수 있다.

 

명령어

일반적으로 기준이 되는 파일을 먼저 나열한다.

diff [OPTION]... FILES

# 예시
diff old.txt new.txt

 

예시)

3번째 줄과 5번째 줄이 변경된 것을 알 수 있다. <로 시작하는 행은 old.txt의 내용이고 > 로 시작하는 행은 new.txt의 내용이다.

즉, fff가 fox로 변경되고, tiger라는 문자열이 추가된 것을 확인할 수 있다.

 

아무런 옵션 없이 사용하면 변경된 내용만을 확인할 수 있는데, -u 옵션을 사용하면 변경된 내용과 변경되지 않은 내용을 한 번에 확인할 수 있다.

diff -u FILES
# -u : --unified. 변경점과 미변경점을 통합하여 출력

# 예시
diff -u old.txt new.txt

빠진 내용은 -으로, 추가된 내용을 +로 표시된다. git diff 명령의 출력과 유사하다.

출력 결과가 한 열(column)으로 나와 가독성이 좋지 않다면, 아래와 같이 두 열로 출력하게끔 할 수도 있다.

diff --side-by-side FILES
# -y : --side-by-side. 두 열로 출력

# 예시
diff -y old.txt new.txt
diff -y old.txt new.txt | cat -n # 줄 번호 표시

 

그 외 옵션

대소문자, 탭 문자, 공백 차이를 무시하고 싶다면 아래의 목록을 참고하여 적절히 옵션을 추가하도록 한다.

  -i, --ignore-case               ignore case differences in file contents
  -b, --ignore-space-change       ignore changes in the amount of white space
  -w, --ignore-all-space          ignore all white space
  -E, --ignore-tab-expansion      ignore changes due to tab expansion
  -B, --ignore-blank-lines        ignore changes where lines are all blank  
  -Z, --ignore-trailing-space     ignore white space at line end

 


참고 문서

https://minholee93.tistory.com/entry/Linux-Diff

https://blog.naver.com/wideeyed/221743877557