%EB%A5%BC%20%EC%88%98%ED%96%89%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
줄 순서가 중요하지 않은 두 개의 텍스트 파일이 있습니다. 한 파일에서 다른 파일과 다른 행을 찾고 싶습니다. Linux에서 diff를 사용하면 차이점을 찾을 수 있을 뿐만 아니라 동일한 텍스트 줄의 변경 사항도 설명합니다.
즉, 줄을 구분하지 않는 차이를 어떻게 수행합니까?
답변1
파일이 너무 크지 않으면 ing하기 sort
전에 파일을 저장할 수 있습니다 diff
.
따라서 다음과 같이 작동합니다.
sort file1 > file1_sorted
sort file2 > file2_sorted
diff file1_sorted file2_sorted
또는 댓글에서 알 수 있듯이 한 줄로 수행할 수도 있습니다.
diff <(sort file1) <(sort file2)
답변2
옵션 과 유사하게 프로세스 대체 및 ( 작동하는 파일이 정렬되어야 함) 명령을 diff
사용할 수 있습니다 . 이렇게 하면 첫 번째 파일의 줄만 억제하거나, 두 번째 파일의 줄만 억제하거나, 두 파일 모두의 줄을 억제 하여 공통 줄, 즉 한 파일 또는 다른 파일에 있는 줄에만 집중할 수 있습니다. 첫 번째 파일에만 있고 두 번째 파일에는 없는 모든 줄을 볼 수 있습니다.comm
sort
comm
-1
-2
-3
comm -23 <(sort file1) <(sort file2)
물론, 원한다면 다음 grep
과 같은 사용을 고려할 수도 있습니다.
grep -vFxf file2 file1
이는 의 줄을 패턴으로 처리하고 ( ) 의 줄을 전체 줄( )과 일치해야 하는 고정 문자열( )로 처리할 때 file2
일치하지 않는 file1의 줄( )만 인쇄합니다 .-v
-f
file2
-F
-x
이 grep
솔루션은 파일을 정렬할 필요가 없다는 장점이 있지만 파일 중 하나에 있는 줄만 확인하고 다른 파일에는 없는 줄만 확인하며 동시에 양방향으로 확인하지는 않습니다.