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 中读取要加载的 ...
随机推荐
- Gson和Fastjson的使用
转载自:JSON技术的调研报告 一.Google的Gson包的使用简单介绍. Gson类:解析json的最基础的工具类 JsonParser类:解析器来解析JSON到JsonElements的解析树 ...
- c语言行编辑程序
static.h 头文件 typedef struct bufferStatic{ char *top; char *base; int staticSize; }bufferStatic; type ...
- Android无线测试之—UiAutomator UiSelector API介绍之四
四种匹配关系介绍 一.四种匹配关系介绍: 二.举例: 匹配字符串 0123456789 1.完全匹配: 0123456789 2.包含匹配: 45678.456.678 3.正则匹配: \d{10 ...
- ProgressBar 进度条设置百分比显示
rawable/progressbar <layer-list xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- (int)()和int()强制类型转换
(int)()这个是c语言的强制转换,众所知周 int(),这种理解靠谱点 Class A { A(int i){} } 调用int类型的构造函数然后转换的 其实都可以转换.
- Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器
http://www.52nlp.cn/python%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E5%AE%9E%E8%B7%B5-% ...
- <2013 12 17> 专业技能
Specialties: • Mechanical design modeling using Pro/ENGINEER and SolidWorks.• Robot control, path pl ...
- <2013 07 05> 804.15. 4--> TI MSP430+CC2520 调试
这一周,实际参与eCar项目的工作正式展开. 来TUM的第一个月,主要熟悉了eCar的机电结构,特别是熟悉了eCar的IT(Information Technology),包括硬件和代码. 来的时候, ...
- JavaScript和jQuery改变标签内容
HTML: <div id="mazey">content</div> JavaScript: var mazey=document.getElementB ...
- 【转】《JAVA与模式》之责任链模式
<JAVA与模式>之责任链模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模 ...