gpt4 book ai didi

linux - 根据一列制作成对的单词

转载 作者:太空狗 更新时间:2023-10-29 11:23:48 25 4
gpt4 key购买 nike

我想根据第三列(标识符)制作成对的单词。我的文件类似于这个例子:

A ID.1
B ID.2
C ID.1
D ID.1
E ID.2
F ID.3

我想要的结果是:

A C ID.1
A D ID.1
B E ID.2
C D ID.1

请注意,我不想以相反的顺序获取相同的词对。在我的真实文件中,一些单词以不同的标识符出现了不止一次。

我试过这段代码,效果很好但需要很多时间(我不知道是否有冗余):

counter=2
cat filtered_go_annotation.txt | while read f1 f2; do
tail -n +$counter go_annotation.txt | grep $f2 | awk '{print "'$f1' " $1}';
((counter++))
done > go_network2.txt

'tail' 用于在读取时删除一行。

最佳答案

Awk解决方案:

awk '{ a[$2] = ($2 in a? a[$2] FS : "") $1 }
END {
for (k in a) {
len = split(a[k], items);
for (i = 1; i <= len; i++)
for (j = i+1; j <= len; j++)
print items[i], items[j], k
}
}' filtered_go_annotation.txt

输出:

A C ID.1
A D ID.1
C D ID.1
B E ID.2

关于linux - 根据一列制作成对的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50565688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com