awk数组统计

awk数组统计处理以下文件内容,将域名取出并根据域名进行计数排序处理:(百度和sohu面试题)1http://www.etiantian.org/index.html2http://www.etiantian.org/1.html3http://post.etiantian.org/index.html4http://mp3.etiantian.org/index.html…

大家好,又见面了,我是你们的朋友全栈君。

处理以下文件内容,将域名取出并根据域名进行计数排序处理:(百度和sohu面试题)

1 http://www.etiantian.org/index.html
2 http://www.etiantian.org/1.html
3 http://post.etiantian.org/index.html
4 http://mp3.etiantian.org/index.html
5 http://www.etiantian.org/3.html
6 http://post.etiantian.org/2.html

要求结果:

mp3.etiantian.org 1
post.etiantian.org 2
www.etiantian.org 3

思路:

  1. 取出域名

    1.  以斜线为菜刀取出第二列(域名)

  1. 进行加工

    1. 创建一个数组

    2. 把第二列(域名)作为数组的下标

    3. 通过类似于i++的形式进行计算数量

  2. 统计后把结果输出

 

1、查看需要处理的文件

1 [root@martin ~]# cat test.txt 
2 http://www.etiantian.org/index.html
3 http://www.etiantian.org/1.html
4 http://post.etiantian.org/index.html
5 http://mp3.etiantian.org/index.html
6 http://www.etiantian.org/3.html
7 http://post.etiantian.org/2.html

2、以斜线为分割符,取出第二列,+表示连续的。

1 [root@martin ~]# awk -F "/+" '{print $2}' test.txt 
2 www.etiantian.org
3 www.etiantian.org
4 post.etiantian.org
5 mp3.etiantian.org
6 www.etiantian.org
7 post.etiantian.org

3、创建数组和进行统计

1 [root@martin ~]# awk -F "/+" '{hotel[$2]}' test.txt             #创建数组
2 [root@martin ~]# awk -F "/+" '{hotel[$2];print $2}' test.txt    #创建数组,并通过print 输出元素名字
3 www.etiantian.org
4 www.etiantian.org
5 post.etiantian.org
6 mp3.etiantian.org
7 www.etiantian.org
8 post.etiantian.org

1 [root@martin ~]# awk -F "/+" '{hotel[$2]++}' test.txt                    #对数组相同下标的数组进行计数统计
2 [root@martin ~]# awk -F "/+" '{hotel[$2]++;print $2,hotel[$2]}' test.txt #通过print输出元素名字和统计数
3 www.etiantian.org 1
4 www.etiantian.org 2
5 post.etiantian.org 1
6 mp3.etiantian.org 1
7 www.etiantian.org 3
8 post.etiantian.org 2

$2表示的是每一行的第二列,是一个变量;hotel[$2]++这种形式类似于i++,只不过把变量i换成了数组hotel[$2]

4、统计完毕后再用for循环打印输出数组不同下表和对应统计数

1 [root@martin ~]# awk -F "/+" '{hotel[$2]++}END{for(pole in hotel) print pole,hotel[pole]}' test.txt
2 mp3.etiantian.org 1
3 post.etiantian.org 2
4 www.etiantian.org 3

1 优化显示,格式化输出
2 [root@martin ~]# awk -F "/+" '{hotel[$2]++}END{for(pole in hotel) print pole,hotel[pole]}' test.txt|sort -k2|column -t
3 mp3.etiantian.org   1
4 post.etiantian.org  2
5 www.etiantian.org   3

5、统计linux系统的history历史记录使用前10的命令

 1 [root@martin ~]# history|awk '{order[$2]++}END{for(n in order) print n,order[n]}'|sort -rnk2|head|column -t
 2 awk                          54
 3 history|awk                  44
 4 [                            22
 5 ll                           19
 6 rpm                          12
 7 yum                          8
 8 w                            6
 9 uname                        6
10 history                      6
11 /etc/rc.d/init.d/keepalived  5

 

本文参考自 “李导的博客” 博客,原地址http://lidao.blog.51cto.com/3388056/1912219

转载于:https://www.cnblogs.com/jmaly/p/6689310.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161670.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • protel 99se 简单的手动画pcb

    protel 99se 简单的手动画pcb(只适合做超级简单的板子)脑子里有原理图即可直接打开protel99se新建一个pcb(PCBdocument)1.      在左侧browsepcb下的browse的下拉框中选择libraries2.      可以看到compoents中有许多元器件选择自己需要的比如单片机就用DIP40就可以了3.      sip单列直插dip双列直插一

    2022年5月30日
  • kmplayer字幕乱码_VLC中文字幕乱码问题

    kmplayer字幕乱码_VLC中文字幕乱码问题今天拷了个《活着》,本想在熄灯之前能看完的,但是这个字幕乱码,折腾了近一个小时,边磕瓜子边google,终于解决了。我的系统是Ubuntu10.10,mplayer是没有GUI的,只能命令行播放。可能在中文环境下不会有什么问题,用加-subcpgbk的方法。但是我的系统是英文环境,所以才费了好多周折,中文一直是下划线。后来看到这篇文章:http://bbs.dospy.com/threa…

    2022年10月30日
  • 一个多边形内部有3枚钉子_多边形的内部和外部

    一个多边形内部有3枚钉子_多边形的内部和外部Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 24 Accepted Submission(s) : 7Problem DescriptionStatement of the Problem Several drawing applications allow us to draw polygons and almost all of the

    2022年8月10日
  • 记一次SpringBootTest报错AbstractMethodError

    记一次SpringBootTest报错AbstractMethodError文章目录注解@SpringBootTest遇到的问题Pleasesetthe’defaultServletName’propertyexplicitly.JavaAbstractMethodError原因分析最终解决办法做开发,大多数的时间是在人云亦云,尤其是在遇到了问题之后——在百度、CSDN上没有方向地搜索。一旦遇到这样的情况,从基础的文档看起,往往屡试不爽。注解@SpringBootTest@SpringBootTest下的属性:property说明cla

    2022年5月25日
  • ACM之Java输入输出[通俗易懂]

    ACM之Java输入输出[通俗易懂]一、Java之ACM注意点1. 类名称必须采用public class Main方式命名2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错误,所以在我看来好多OJ系统做的是非常之垃圾3. 有些OJ上的题目会直接将OI上的题目拷贝过来,所以即便是题目中有输入和输出文件,可能也不需要,因为在OJ系统中一般是采用标准输入输出,不需要文件4. 在有多行数据输入的情况下

    2022年5月9日
  • GridView利用CheckBox复选框列实现单选功能

    GridView利用CheckBox复选框列实现单选功能自Dev13.2开始,GridView提供了自带的复选框列,该功能能实现多选操作,方便了不少,那如果想把这个自带的复选框列做成单选,那就需要单独处理了。先补充一下,GridView的复选框列怎么设置,如下代码片段,只要设置前面两个属性即可在GridView看到有一列复选框(BandedGridView较老版本不支持这个功能,应该得在19.2或者20之后的版本才支持,具体可以看看自己的版本,如果设置无效,那么说明不支持)://设置显示复选框列gridview.Option

    2022年5月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号