我有一个包含用户推文的文本文件,其中:
470192 anneJackson Apple's new iPhone is a no go for me
470193 trex90 For something so expensive, I'll go for Android anyway
470194 anneJackson What an outrageous pricing!
其中第一列表示 ID,后跟用户名和用户的推文。我现在想做的是编写一个命令来计算每个唯一用户的推文数量,这给了我类似的内容:
anneJackson 2
trex 1
我尝试过类似的事情:
cut -f 2 Twitter_Data_1 | sort | uniq -c
但感觉不对,因为我只使用用户列,不包括推文。
答案1
这是一份好工作awk:
awk '{ a[$2]++ }END{ for(i in a) printf "%-15s%s\n",i,a[i] }' Twitter_Data_1
a[$2]++
- 增加每个唯一的出现次数用户名(由第二个字段值表示$2
)
输出:
trex90 1
anneJackson 2
答案2
假设您的文件具有固定宽度的列,并且列之间的空格是空白而不是制表符,
cut -c 10-24 Twitter_Data_1 | sort | uniq -c
这会给你
2 anneJackson
1 trex90
您不需要在命令中包含推文,因为每一行代表一条推文。