我需要計算給定變量的特定列中的值發生的次數。計算與其他列中的變量對應的特定列
具體來說,我有一個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列中唯一字符串的總髮生次數 - 而我需要知道數字o f與第4列中發生的不同變量。
是否可以使用awk或grep來達到我想要的結果? 該文件相當大,大於100萬行,因此優化非常重要。
這是這篇文章的一些重複:http://stackoverflow.com/questions/19705930/ print-lines-that-contain-a-value-in-a-specific-column-shared-by-more-1-enti/19706333#19706333 – Jotne
不,它不是。相同的數據,不同的問題:) – owwoow14