一道shell笔试题
2017-08-04 13:50
155 查看
1. 题目
一个包含ip的文本文件ip.txt,要求用shell命令统计每个ip出现的次数,并按降序排序2. 解答
文本处理,行单位处理,用awkawk '{num[$1]++} END{for(k in num)print k,"----",num[k] | "sort -rk 3"}' ip.txt
3. 涉及技术点
1. awk数组
awk数组允许将任何数字或者字符串表达式作为索引(有点像python里面的dict)。2. awk程序模型
awk把输入流看成一连串记录的集合,每个记录表示输入文件中的一行。一个awk程序由一对以模式+操作组合而成。pattern {action} # 如果模式匹配,则执行操作 pattern # 如果模式匹配,则打印记录(缺省action) {action} # 对每条记录,执行操所(缺省pattern)
大部分pattern是数字或者字符串表达式,awk保留两个特殊的pattern
BEGIN {...} # 读取文件之前执行 END {...} # 读完全部文件之后执行
BEGIN和END可以有多个。多个BEGIN的执行顺序由定义顺序决定,END同。
上面的命令中,使用了2对pattern+action
{num[$1]++}
缺省pattern,对每行输入数据,都会进行处理
END{for(k in num)print k,"----",num[k] | "sort -rk│ 3"}
在读取全部文件之后,执行大括号里的指令。
3. awk中的循环
for循环有两种形式awk 'BEGIN { for(x=0; x<=1; x+=0.05) print x}' awk 'BEGIN { for(name in names) print name}' # names是定义的数组
4. awk调用shell命令
管道 + 双引号{for(k in num)print k,"----",num[k] | "sort -rk 3"}
5. sort命令
默认升序,-r降序指定排序的键所在的域,-k 3,默认分隔符为空格,可以用-t设置分隔符
相关文章推荐
- 一道Shell笔试题解答
- 一道shell命令笔试题
- 一道shell命令笔试题
- 阿里巴巴2014校园招聘研发笔试一道JAVA附加题分析
- 【一道航天信息java笔试题】return语句和finally语句的执行顺序
- 一道关于C++派生类初始化的笔试题
- 博彦科技软件测试工程师一道C笔试题
- C/Python实现的一道笔试题
- indeed一道在线笔试题
- 腾讯实习生的一道笔试题
- 一道多态的笔试题
- 一道阿里笔试题-javascript
- 2014年9月14号阿里巴巴校招笔试题 一道题的JAVA实现
- 一道简单的笔试题
- 阿里巴巴笔试的一道综合题
- 阿里巴巴一道笔试题的答案
- 分享一道笔试题目--关于static和extern变量的问题
- 一道来自亚马逊的笔试题
- 一道实用linux运维问题的9种shell解答方法!
- 一道笔试题