用于计算名称的AWK序列

时间:2018-03-14 17:23:48

标签: unix awk

数据示例:

01 IF 9/1 Adomaitis Valius      adomvali 8.7
02 IF 9/1 Arlauskas Arunas      arlaarun 5.7
03 IF 9/1 Bendoraitis Vaidotas  bendvaid 8.5
04 IF 9/1 Bruklyte Sandra       bruksand 7.8
05 IF 9/1 Dagys Gediminas       dagygedi 7.4

我想写一个awk代码,它会打印出文件中的每个名字(Valius,Arunas等)以及它出现的次数。例如:Valius 25,Vaidotas 35等等。而Valius和其他名字在结果中不会出现两到三次。 我的awk代码到现在为止:

awk '{print $5}' /var/lab/lab2/rusiuot/stud2001

有什么建议吗?另外,我怎样才能编写一个命令来计算列中有多少个唯一姓氏(名称前面的列)?

1 个答案:

答案 0 :(得分:0)

如果您想要计算第5列,那么以下内容可能对您有帮助。

awk '{if(!b[$(NF-2)]){b[$(NF-2)]++}} {a[$(NF-2)]++} END{for(i in a){print "sur name:",i,"Total count:",a[i],"Unique count:",b[i]}}'   Input_file

输出如下(我刚刚编辑了你的样本,我在Input_file中添加了13次字符串Valius)。

sur name: Vaidotas Total count: 1 Unique count: 1
sur name: Arunas Total count: 1 Unique count: 1
sur name: Sandra Total count: 1 Unique count: 1
sur name: Gediminas Total count: 1 Unique count: 1
sur name: Valius Total count: 13 Unique count: 1