![如何按列删除文件内容的重复?](https://linux22.com/image/153548/%E5%A6%82%E4%BD%95%E6%8C%89%E5%88%97%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9%E7%9A%84%E9%87%8D%E5%A4%8D%EF%BC%9F.png)
我有一个包含以下内容的文件:
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