특정 열을 기반으로 CSV의 고유 레코드 식별 [중복]

특정 열을 기반으로 CSV의 고유 레코드 식별 [중복]

입력이 다음과 같은 경우

foo,bar,baz
bar,baz,qux
qux,quux,baz
bar,foo,qux
waldo,fred,garply

출력은

foo,bar,baz
bar,baz,qux
waldo,fred,garply

보시다시피 세 번째 열의 값을 기준으로 레코드가 중복 제거됩니다. 여러 레코드에 동일한 세 번째 열 값이 있는 경우 무작위로 하나(또는 첫 번째, 중요하지 않음)를 선택합니다.

답변1

awk에 대한 관용적 대답은 다음과 같습니다.awk -F, '!seen[$3]++' file

세 번째 열에 값이 처음 표시되면 행이 인쇄됩니다.

답변2

출력 순서에 상관없으시면 sort아래와 같이 직접 사용하시면 됩니다.

  • -t,필드 구분 기호를 ","로 설정
  • -k3정렬 키를 세 번째 필드로 정의
  • -u고유한 결과만 필요함을 나타냅니다.

    $ sort -t, -k3 -u file
    foo,bar,baz
    waldo,fred,garply
    bar,baz,qux
    $
    

관련 정보