我有一个包含以下内容的文件:
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