CSV 파일에서 Linux 명령줄과 다른 줄을 찾는 방법은 무엇입니까?

CSV 파일에서 Linux 명령줄과 다른 줄을 찾는 방법은 무엇입니까?

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?commgrep

답변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
    

관련 정보