在给定变量的情况下,我需要计算特定列中的值出现的次数。
具体来说,我有一个 3 列制表符分隔的文件,我有兴趣在其中了解第 4 列中与第 2 列中的字符串一起出现的不同变量的数量。
这是一个输入示例:
waterline-n below-sheath-v 14.8097 A
dock-n below-sheath-v 14.5095 B
waterline-n below-steel-n 11.0330 A
picnic-n below-steel-n 12.2277 C
game-n below-steel-n 12.2277 D
dock-n below-steel-n 12.2277 D
wavefront-n at-part-of-variance-n 18.4888 L
wavefront-n between-part-of-variance-n 17.0656 A
audience-b between-part-of-variance-n 17.6346 B
game-n between-part-of-variance-n 14.9652 C
whereabouts-n become-rediscovery-n 11.3556 L
whereabouts-n get-tee-n 10.9091 L
这是所需输出的示例:
waterline-n below-sheath-v 14.8097 A 2
dock-n below-sheath-v 14.5095 B 2
waterline-n below-steel-n 11.0330 A 3
picnic-n below-steel-n 12.2277 C 3
game-n below-steel-n 12.2277 D 3
dock-n below-steel-n 12.2277 D 3
wavefront-n at-part-of-variance-n 18.4888 L 1
wavefront-n between-part-of-variance-n 17.0656 A 2
audience-b between-part-of-variance-n 17.6346 B 2
game-n between-part-of-variance-n 14.9652 C 1
whereabouts-n become-rediscovery-n 11.3556 L 1
whereabouts-n get-tee-n 10.9091 L 1
我尝试了以下awk:
awk 'NR==FNR{a[$2]++;next}{print $0 "\t" a[$2]}' file file
但它计算了第 2 列中唯一字符串通常出现的次数——而我需要知道第 4 列中它出现的不同变量的数量。
是否可以使用 awk 或 grep 来达到我想要的结果?该文件非常大 > 100 万行,因此优化很重要。