加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

为列的每个唯一值输出整行一次(Bash)

发布时间:2020-12-15 18:56:39 所属栏目:安全 来源:网络整理
导读:这肯定是awk或其他方面的一项微不足道的任务,但它让我今天早上挠头.我有一个格式与此类似的文件: pep AEYTCVAETK 2 genes ADUm.1024,ADUm.5198,ADUm.750pep AIQLTGK 1 genes ADUm.1999,ADUm.3560pep AIQLTGK 8 genes ADUm.1999,ADUm.3560pep KHEPPTEVDIEGR
这肯定是awk或其他方面的一项微不足道的任务,但它让我今天早上挠头.我有一个格式与此类似的文件:
pep> AEYTCVAETK     2   genes ADUm.1024,ADUm.5198,ADUm.750
pep> AIQLTGK        1   genes ADUm.1999,ADUm.3560
pep> AIQLTGK        8   genes ADUm.1999,ADUm.3560
pep> KHEPPTEVDIEGR  5   genes ADUm.367
pep> VSSILEDKTT     9   genes ADUm.1192,ADUm.2731
pep> AIQLTGK        10  genes ADUm.1999,ADUm.3560
pep> VSSILEDKILSR   3   genes ADUm.2146,ADUm.5750
pep> VSSILEDKILSR   2   genes ADUm.2146,ADUm.5750

我想在第2列中为每个不同的肽值打印一行,这意味着上面的输入将成为:

pep> AEYTCVAETK     2   genes ADUm.1024,ADUm.2731
pep> VSSILEDKILSR   3   genes ADUm.2146,ADUm.5750

这是我到目前为止所尝试过的,但显然我也不需要:

awk '{print $2}' file | sort | uniq
# Prints only the peptides...
awk '{print $0,"t",$1}' file |sort | uniq -u -f 4
# Altogether omits peptides which are not unique...

最后一点,它需要将作为其他肽的子串的肽作为不同的值处理(例如VSSILED和VSSILEDKILSR).谢谢 :)

使用awk的一种方法:
awk '!array[$2]++' file.txt

结果:

pep> AEYTCVAETK     2   genes ADUm.1024,ADUm.5750

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读