파일 내용의 중복 항목을 열별로 제거하는 방법은 무엇입니까?

파일 내용의 중복 항목을 열별로 제거하는 방법은 무엇입니까?

다음 내용이 포함된 파일이 있습니다.

WP_021815421.1  OG5_132922  deth|YP_182312  3   -07 42.35   81.7
WP_021815427.1  OG5_128110  rbal|NP_868155  1   -55 50.72   53.2
WP_012456834.1  NO_GROUP    bsui|NP_700181  8   -53 48.18   62
WP_084606289.1  OG5_132922  aful|NP_069703  5   -28 57.00   92.6
WP_084606284.1  OG5_153487  bpse|YP_331974.1    6   -78 48.87   91.4

두 번째 열의 맨 아래에 있는 중복 행을 제거하고 싶습니다 (OG number). 출력에는 동일한 OG number.

사용하고 sort -u있는데 sort -k 2 -u 작동하지 않습니다.

답변1

awk '!seen[$2]++' file

그러면 두 번째 열의 고유 행만 인쇄됩니다. 산출:

WP_021815421.1  OG5_132922  deth|YP_182312  3   -07 42.35   81.7                                                                                                                                                                          
WP_021815427.1  OG5_128110  rbal|NP_868155  1   -55 50.72   53.2                                                                                                                                                                             
WP_012456834.1  NO_GROUP    bsui|NP_700181  8   -53 48.18   62                                                                                                                                                                               
WP_084606284.1  OG5_153487  bpse|YP_331974.1    6   -78 48.87   91.4

답변2

정렬 필드를 두 번째 열(두 번째 열에서 행 끝까지가 아니라)로 제한하려면 끝 위치를 지정해야 합니다.

$ sort -uk2,2  file
WP_012456834.1  NO_GROUP    bsui|NP_700181  8   -53 48.18   62
WP_021815427.1  OG5_128110  rbal|NP_868155  1   -55 50.72   53.2
WP_021815421.1  OG5_132922  deth|YP_182312  3   -07 42.35   81.7
WP_084606284.1  OG5_153487  bpse|YP_331974.1    6   -78 48.87   91.4

관련 정보