file1.csv
와 사이에 어떤 줄이 다른지 알아보려고 합니다 file2.csv
. file1.csv
다음과 같은 경우 :
1,2,3,4
5,6,7,8
9,10,11,12
다음과 같습니다 file2.csv
.
1,2,3,4
9,9,9,9
5,6,7,8
9,9,11,12
이러한 고유한 선을 가져오려면 어떤 명령을 사용할 수 있습니까? 또한 최고의 도구가 될까요 diff
?comm
grep
답변1
당신은 다음을 찾고 있을 수도 있습니다 comm
:
$ comm <(sort file1.csv) <(sort file2.csv)
1,2,3,4
5,6,7,8
9,10,11,12
9,9,11,12
9,9,9,9
기본적으로 첫 번째 파일에 있는 줄만 첫 번째 열로 인쇄하고, 두 번째 파일에도 있는 줄을 두 번째 열로 인쇄합니다. -1
, -2
또는 를 사용하여 -3
이러한 열을 숨길 수 있습니다 . 예를 들어:
두 파일의 내용만 표시:
$ comm -12 <(sort file1.csv) <(sort file2.csv) 1,2,3,4 5,6,7,8
첫 번째 파일에 있는 줄만 표시하고 두 번째 파일에는 없는 줄을 표시합니다.
$ comm -32 <(sort file1.csv) <(sort file2.csv) 9,10,11,12
두 번째 파일에는 존재하지만 첫 번째 파일에는 없는 줄만 표시합니다.
$ comm -31 <(sort file1.csv) <(sort file2.csv) 9,9,11,12 9,9,9,9