Linux基础延申·AWK(二)

本文详细介绍了awk命令在Linux环境中的运用,包括计算文件行数、求和及统计空行。通过实例展示了如何使用awk对数据进行处理,如统计特定列的数值和,并在数组中进行操作。此外,还探讨了awk在面试场景中的应用,如域名计数排序和根据返回码统计访问流量。文章强调了awk在处理大量数据时的优势,并提供了相关的解决方案。
摘要由CSDN通过智能技术生成

1.使用awk求文件有多少行

环境

[root@centos ~]# seq 100 > test

//生成100个随机数到test文件中

命令

每浏览一行,就会给i的值加一,直至最后一行,输出i的值

2.使用awk求和

环境

[root@centos ~]# seq 100 > test

//生成100个随机数到test文件中

命令

每浏览一行,就会将这一行进行i+这一行值的运算,即:i+1=1i+2=3i+3=6…直到加到最后的行的值,然后输出i最后的值。

环境

100个随机数,分成两列导入到test

命令

将第一列和第二列的值相加,然后输出i的值

3.使用awk命令统计空行

环境

 /etc/services

命令

每浏览一行空行,就会给i的值+1,最终输出i的值

ps

awk中,如果没有定义初值,那么会默认增加一个初值。

awk数组

变量

一个位置的字母组合,也就是变量名,给他赋值一个数字或字符串,一对一。

数组

一个变量名,叫做数组名。他有角标,如:h[1]=ah[2]=bh[3]=c…

结构:数组名  元素名  = 

        h       [1]    =  a

属组名中存放的是元素,元素中存放的是值

举例

相同的属组,不同的元素,要用“;”隔开。要输出值,需打印其“数字名[元素名]”。不能直接输出数组名。

循环

输出

要想直接输出数组名,需要调用循环变量。

i每从h中取一个值,就输出一次i的值,指导输出h中的所有内容。

将取出的角标放到属组h[]内,就可以达到输出属组值得效果。

psi就是个未知数,在循环时,不会定义i的值,而是让i在数组中进行匹配,每匹配一次,i就会得到一个值,进行输出;后面的h[i]就相当于,加入i的值为4,那么就是输出h[4],而h[4]的值为d,所以输出d。)

面试

例题

将域名取除并根据域名进行计数排序处理

环境

源码:

http://www.etiantian.org/index.html

http://www.etiantian.org/1.html

http://post.etiantian.org/index.html

http://mp3.etiantian.org/index.html

http://www.etiantian.org/3.html

http://post.etiantian.org/2.html

 

常规

常规方法虽然能达到效果,但是关于awk的使用来看,这并不是我们所要的。

因为常规方式是不能用来计算的。

数组

先以/为分隔符进行过滤,再以第二列作为角标进行分组,每检索相同角标的行就会给该类组+1,然后重新将值交给角标。利用循环语句,让ih里调取值,然后将i的值输出到屏幕,再输出角标的最终值。

在数组中,已有的元素名是不能重复的。

面试

例题

统计所有访问成功的域名,查看哪个域名的访问流量之和最大。(成功访问,返回码为:200304302301

环境

http://www.etiantian.org/index.html 200 1100

http://www.etiantian.org/1.html   304 8000

http://post.etiantian.org/index.html 200 1000

http://mp3.etiantian.org/index.html 301 2000

http://www.etiantian.org/3.html 404 1500

http://post.etiantian.org/2.html 302 1200

源码

源码*3,多做一些

数组

以空格和/做参照,过滤列,匹配第四列为200304301302的行,以第二列域名做角标创建数组,其值为域名+第五列的值,引用循环,ih中进行检索赋值,输出i的值和i的最终结果。

面试

例题

当一个目标数据量过大,被怀疑是黑客的肉鸡时,如果直接禁用的话,对黑客是造不成影响的。这时候我们可以将图片交给专业部门进行裁剪,让其变小,这样可以减少带宽压力。

2020-12-18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值