一道shell笔试题
发布时间:2020-12-15 16:34:56 所属栏目:安全 来源:网络整理
导读:1. 题目 一个包含ip的文本文件ip.txt,要求用shell命令统计每个ip出现的次数,并按降序排序 2. 解答 文本处理,行单位处理,用awk awk '{num[$1]++} END { for (k in num)print k, "----" ,num[k] | "sort -rk 3" } ' ip.txt 3. 涉及技术点 1. awk数组 awk数
1. 题目一个包含ip的文本文件ip.txt,要求用shell命令统计每个ip出现的次数,并按降序排序 2. 解答文本处理,行单位处理,用awk awk '{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命令
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |