특정 열에서 중복 항목 제거

특정 열에서 중복 항목 제거

열이 쉼표로 구분된 다음 형식의 파일이 있습니다.

[1], Value1,   UAC,                 AB
[2.2], Check1, BOH D2A D2A BOH,     SD
[63], name2,   MFB MFB,              k
...

다음 과 같이 열(예: 세 번째 열)에서 중복 값을 제거하고 싶습니다 .

[1], Value1,   UAC,             AB
[2.2], Check1, BOH D2A ,        SD
[63], name2,   MFB,              k
...

특정 열을 사용 uniq하거나 타겟팅하는 방법AWK

답변1

그리고 awk:

awk -F, '{
    printf $1 FS $2 FS; 
    split($3, arr, / +/); for(val in arr) !uniq_arr[ arr[val] ]++;
    for (key in uniq_arr) { 
        printf (key!="")? SPACE key:""; SPACE=" "; delete uniq_arr[key]
    };
    printf FS $4"\n"
}' infile

[1], Value1, UAC, AB
[2.2], Check1, D2A BOH, SD
[63], name2, MFB, k
  • 이렇게 하면 열 3이 공백 구분 기호를 기준으로 split($3, arr, / +/)배열로 분할 됩니다 arr(구분 기호로 하나 이상의 공백이 있을 수 있음).

  • 에서는 for(val in arr) !uniq_arr[ arr[val] ]++배열에서 가져온 중복 값을 제거하여 새 배열을 생성하므로 arr배열의 최종 값은 uniq_arr각 열의 고유 값 3입니다.

  • 다음으로 저장된 값을 인쇄 uniq_arr하고 인쇄 후 키를 삭제합니다. 열 #1, #2 및 #4의 값은 개별적으로 인쇄됩니다.

또한보십시오:

답변2

여기에 이미지 설명을 입력하세요.

uniq -f 옵션이 도움이 될 수 있습니다. 확인하세요.

관련 정보