awk之腾迅面试题1
2 3 1 0
4 5 6 9
2 3 4 4
2 2 1 0
4 5 0 9
假如把2列和3列的值作为新的第5列,第5列的平均值为avg5,求第5列中大于avg5的行数。
- awk '{x+=$2+$3;a[NR]=$2+$3}END{y=x/NR;for(i in a){if(y<a[i])z++}print z}' file
[解析]
这个题初看,觉得简单,仔细看又觉得有难度,否则腾讯这些大企业也不会出这么简单的题了,呵呵。首先来分析,第5列的值很好办 $2+$3,但是求平均值比较麻烦,麻烦的原因是只有最后END才可以通过累加的x的值来除以行数然后得出平均值,又有个一个新的问题,这时候已经END了,求出了平均值但是无法再从新历遍全文去比较每行的 $2+$3 是否大于该平均值,怎么着?总得有个东西来装 $2+$3 的结果吧,目的是将$2+$3的结果放入一个容器,在END求出平均值后再拿出来判断比较,惯例请出我们的老朋友数组。最后的大家都能看懂了吧。
- awk 'BEGIN{while(getline<"file"){x+=$2+$3;i++};y=x/i}{if($2+$3>y)z++}END{print z}' file
[解析]
这是7月22日更新的新命令,我新学会的一种处理手段,在BEGIN模块中利用 while(getline<"file") 来提前历遍全文,在BEGIN中我们可以看到,我已经把$2+$3的和累加给了x变量,但是求平均值必须要知道行数,怎么办呢?这时候在BEGIN中NR还是0,当然可以搞定了,我们这时候就不用NR自己建个变量来保存行数就好了嘛,这样我们可以顺利的在BEGIN模块中就已经求出了平均数了。然后按照正常的执行流程再逐行判断第2列和第3列的和是否大于这个平均数,最后打印统计结果。
awk之腾迅面试题1的更多相关文章
- awk与sed命令面试题整理
1.sed命令123abc456456def123567abc789789def567要求输出:456ABC123123DEF456789ABC567567DEF789答案:sed -r -i 's# ...
- 关于AWK的10个经典案例
awk是Linux系统下一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件.数据排序.计算以及生成报表等等,应用非常广泛.基本的命令语法:awk option 'pattern {actio ...
- 2019 安易迅java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.安易迅等公司offer,岗位是Java后端开发,因为发展原因最终选择去了安易迅,入职一年时间了,也成为了面试官 ...
- 最新 安易迅java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿. 安易迅等10家互联网公司的校招Offer,因为某些自身原因最终选择了 安易迅.6.7月主要是做系统复习.项目复盘.Leet ...
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
- split分割大文件--包含通过awk按规则分割文件到对应子文件
当对一个大文件进行传输或者分析的时候,一个可以参考的办法是先通过split对文件进行分割,再对每个子文件进行处理,如果需要合并再进行合并. split函数可以按文件大小或者行数来进行分割. -a : ...
- Liunx面试题
答案待定 1.请用shell查询file1 里面空行的所在行号2.编写ShellScript查询file1 以abc 结尾的行3.打印出file1 文件第1 到第3 行4.如何将本地80 端口的请求转 ...
- Hadoop 之面试题
颜色区别: 蓝色:hive,橙色:Hbase.黑色hadoop 请简述hadoop怎样实现二级排序. 你认为用Java,Streaming,pipe 方式开发map/reduce,各有哪些优缺点: 6 ...
- Linux面试题汇总答案
转自:小女生的Linux技术~~~Linux面试题汇总答案~~ 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的 ...
随机推荐
- android JNI常用添加log方法
android JNI 打log方法 添加库支持 LOCAL_LDLIBS :=-llog -landroid 包含头文件 #include <android/log.h> #define ...
- FTP(File Transfer Protocol)是什么?
文件传输协议 FTP(File Transfer Protocol),是文件传输协议的简称.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).用户可以通过 ...
- 第二篇:尽可能使用 const
前言 const 关键字是常量修辞符,如果要告知编译器某个变量在程序中不会发生改变,则可将其声明为 const. 但,对 const 关键字的认识不能仅仅停留在这一层 - 它提供了很多更强大的功能. ...
- 如何停止和扭转UIView的动画
本文转载至 http://codego.net/576089/ 我有它收缩时碰到切换按钮UIView的动画跳和它扩展恢复到原来的大小当再次接触到按钮.密封式前大灯一切都工作得很好.问题是,动画师注意 ...
- python MD5操作
def my_md5(str): import hashlib new_str = str.encode() #把字符串转成bytes类型 # new_str = b'%s'%str #把字符串转成b ...
- java MD5工具类
package com.common.tools; import java.security.MessageDigest; /** * MD5加密工具类 * <功能详细描述> * * @a ...
- CSS如何清除浮动流的多种方案
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mix-in class selectors
语言特性 | Less 中文网 http://lesscss.cn/features/#mixins-feature Mixins "mix-in" properties from ...
- 【24】response对象以及Python3中的一些变化
request.COOKIES 用来获取cookie response.write() 写的方法是response对象的 转自:博客园python3的变化 print 由一个语句(st ...
- Python3.6全栈开发实例[021]
21.给出一个纯数字列表. 请对列表进行排序(升级题). 思路: (1)完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10(2)循环列表. 判断a[ ...