Linux에서 줄을 구분하지 않는 차이(diff)를 수행하는 방법은 무엇입니까?

Linux에서 줄을 구분하지 않는 차이(diff)를 수행하는 방법은 무엇입니까?

줄 순서가 중요하지 않은 두 개의 텍스트 파일이 있습니다. 한 파일에서 다른 파일과 다른 행을 찾고 싶습니다. 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사용할 수 있습니다 . 이렇게 하면 첫 번째 파일의 줄만 억제하거나, 두 번째 파일의 줄만 억제하거나, 두 파일 모두의 줄을 억제 하여 공통 줄, 즉 한 파일 또는 다른 파일에 있는 줄에만 집중할 수 있습니다. 첫 번째 파일에만 있고 두 번째 파일에는 없는 모든 줄을 볼 수 있습니다.commsortcomm-1-2-3

comm -23 <(sort file1) <(sort file2)

물론, 원한다면 다음 grep과 같은 사용을 고려할 수도 있습니다.

grep -vFxf file2 file1

이는 의 줄을 패턴으로 처리하고 ( ) 의 줄을 전체 줄( )과 일치해야 하는 고정 문자열( )로 처리할 때 file2일치하지 않는 file1의 줄( )만 인쇄합니다 .-v-ffile2-F-x

grep솔루션은 파일을 정렬할 필요가 없다는 장점이 있지만 파일 중 하나에 있는 줄만 확인하고 다른 파일에는 없는 줄만 확인하며 동시에 양방향으로 확인하지는 않습니다.

관련 정보