求awk使用方法(用来统计量,其它可以满足要求的方法也行)
是这样的我现在有个文本文档,一行就是一个邮箱地址,这里面有各种邮箱的后缀。现在我想一次性统计出个邮箱后缀个数,例如@qq.com这个邮箱的个数多少个,@163.com这个...
是这样的我现在有个文本文档,一行就是一个邮箱地址,这里面有各种邮箱的后缀。现在我想一次性统计出个邮箱后缀个数,例如@qq.com这个邮箱的个数多少个,@163.com这个后缀的邮箱多少个。之后把这些邮箱定向到相关的文本去,求方法谢谢。
展开
3个回答
展开全部
我写了个awk脚本,代码很简单,并附加了注释,源码如下:
#!/bin/awk -f
BEGIN{
#设置域分隔符为@,这样$2表示的就是邮箱的名称,比如gmail.com
FS="@"
}
{
#用一个关联数组mailCount来统计每个邮箱的个数
mailCount[$2]++;
#把当前行输入到"邮箱名.txt"文件中
#比如如果当前行是eagle@gmail.com,就把这行写到gmail.com.txt文件中
#">>"表示以追加的方式写
printf($0"\n")>>$2".txt"
}
#当整个文件处理完之后,打印文件中每种邮箱的个数
END{
for (item in mailCount)
printf("%-15s: %d\n",item,mailCount[item])
}
##################################################
运行方法:
1.把以上文件保存到awk.email文件中
2.给脚本增加可执行权限 chmod +x awk.email
3.运行脚本,./awk.email data.email (假设你的数据文件是data.email)
运行完成后,除了在控制台打印统计情况,还会在当前目录下,生成每个邮箱名命名的txt文件
#!/bin/awk -f
BEGIN{
#设置域分隔符为@,这样$2表示的就是邮箱的名称,比如gmail.com
FS="@"
}
{
#用一个关联数组mailCount来统计每个邮箱的个数
mailCount[$2]++;
#把当前行输入到"邮箱名.txt"文件中
#比如如果当前行是eagle@gmail.com,就把这行写到gmail.com.txt文件中
#">>"表示以追加的方式写
printf($0"\n")>>$2".txt"
}
#当整个文件处理完之后,打印文件中每种邮箱的个数
END{
for (item in mailCount)
printf("%-15s: %d\n",item,mailCount[item])
}
##################################################
运行方法:
1.把以上文件保存到awk.email文件中
2.给脚本增加可执行权限 chmod +x awk.email
3.运行脚本,./awk.email data.email (假设你的数据文件是data.email)
运行完成后,除了在控制台打印统计情况,还会在当前目录下,生成每个邮箱名命名的txt文件
展开全部
awk -F'@' 'BEGIN{printf "%-17s%s\n","Email","Count"}{addr[$2]++}END{for (i in addr) printf "%-17s%s\n",i ,addr[i]}' file1_name >> /file2_name
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
awk -F'@' '{a[$2]++}END{for (i in a) print i,a[i]}' file
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询