열이 쉼표로 구분된 다음 형식의 파일이 있습니다.
[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의 값은 개별적으로 인쇄됩니다.
또한보십시오: