1.使用awk求文件有多少行 | ||
环境 | [root@centos ~]# seq 100 > test //生成100个随机数到test文件中 | |
命令 | 每浏览一行,就会给i的值加一,直至最后一行,输出i的值 | |
2.使用awk求和 | ||
环境 | [root@centos ~]# seq 100 > test //生成100个随机数到test文件中 | |
命令 | 每浏览一行,就会将这一行进行i+这一行值的运算,即:i+1=1,i+2=3,i+3=6…直到加到最后的行的值,然后输出i最后的值。 | |
环境 | 将100个随机数,分成两列导入到test中 | |
命令 | 将第一列和第二列的值相加,然后输出i的值 | |
3.使用awk命令统计空行 | ||
环境 | /etc/services | |
命令 | 每浏览一行空行,就会给i的值+1,最终输出i的值 | |
ps | 在awk中,如果没有定义初值,那么会默认增加一个初值。 | |
awk数组 | ||
变量 | 一个位置的字母组合,也就是变量名,给他赋值一个数字或字符串,一对一。 | |
数组 | 一个变量名,叫做数组名。他有角标,如:h[1]=a,h[2]=b,h[3]=c…
属组名中存放的是元素,元素中存放的是值 | |
举例 | 相同的属组,不同的元素,要用“;”隔开。要输出值,需打印其“数字名[元素名]”。不能直接输出数组名。 | |
循环 输出 | 要想直接输出数组名,需要调用循环变量。 i每从h中取一个值,就输出一次i的值,指导输出h中的所有内容。 | |
将取出的角标放到属组h[]内,就可以达到输出属组值得效果。 ps(i就是个未知数,在循环时,不会定义i的值,而是让i在数组中进行匹配,每匹配一次,i就会得到一个值,进行输出;后面的h[i]就相当于,加入i的值为4,那么就是输出h[4],而h[4]的值为d,所以输出d。) | ||
面试 例题 | 将域名取除并根据域名进行计数排序处理 | |
环境 | 源码:
| |
常规 | 常规方法虽然能达到效果,但是关于awk的使用来看,这并不是我们所要的。 因为常规方式是不能用来计算的。 | |
数组 | 先以/为分隔符进行过滤,再以第二列作为角标进行分组,每检索相同角标的行就会给该类组+1,然后重新将值交给角标。利用循环语句,让i从h里调取值,然后将i的值输出到屏幕,再输出角标的最终值。 在数组中,已有的元素名是不能重复的。 | |
面试 例题 | 统计所有访问成功的域名,查看哪个域名的访问流量之和最大。(成功访问,返回码为:200,304,302,301) | |
环境 |
源码*3,多做一些 | |
数组 | 以空格和/做参照,过滤列,匹配第四列为200,304,301,302的行,以第二列域名做角标创建数组,其值为域名+第五列的值,引用循环,i在h中进行检索赋值,输出i的值和i的最终结果。 | |
面试 例题 | 当一个目标数据量过大,被怀疑是黑客的肉鸡时,如果直接禁用的话,对黑客是造不成影响的。这时候我们可以将图片交给专业部门进行裁剪,让其变小,这样可以减少带宽压力。 | |
2020-12-18 | ||
Linux基础延申·AWK(二)
最新推荐文章于 2024-08-07 19:39:11 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)