gpt4 book ai didi

linux - AWK 脚本 : Finding number of matches that each element in Col2 has in Col1

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:49 25 4
gpt4 key购买 nike

我想使用 AWK 比较文件中的两列,如下所示,有人可以帮忙吗?

例如

Col1   Col2
---- ----
2 A
2 D
3 D
3 D
3 A
7 N
7 M
1 D
1 R

现在我想使用 AWK 实现以下算法来查找这些列之间的匹配项:

list1[] <=== Col1
list2[] <=== Col2
NewList[]
for i in col2:
d = 0
for j in range(1,len(col2)):
if i == list2[j]:
d++
NewList.append(list1[list2.index[i]])

预期结果:

A ==> 2  // means A matches two times to Col1
D ==> 4 // means D matches two times to Col1
....

所以我想用 AWK 脚本编写上面的代码,但我发现它对我来说太复杂了,因为我还没有使用过它。

非常感谢您的帮助

最佳答案

没那么复杂,将计数保存在一个由字符索引的数组中,并在末尾打印出该数组;

awk '{cnt[$2]++} END {for(c in cnt) print c, cnt[c]}' test.txt

# A 2
# D 4
# M 1
# N 1
# R 1

{cnt[$2]++} # For each row, get the second column and increase the
# value of the array at that position (ie cnt['A']++)

END {for(c in cnt) print c, cnt[c]}
# When all rows done (END), loop through the keys of the
# array and print key and array[key] (the value)

关于linux - AWK 脚本 : Finding number of matches that each element in Col2 has in Col1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35541308/

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