Linux

如何按列刪除文件內容的重複?

  • May 15, 2019

我有一個包含以下內容的文件:

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

我想刪除第二列底部的 repitition 線(OG number)。輸出不應包含包含相同的第三行OG number

我正在使用sort -usort -k 2 -u 但它不起作用。

要將排序欄位限制在第二列(而不是從第二列到行尾),您必須指定結束位置:

$ 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
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

引用自:https://unix.stackexchange.com/questions/518875