面试题集-linux
Posted 晓月寒轩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题集-linux相关的知识,希望对你有一定的参考价值。
1、写一个 查找一个log文件中,每个ip地址出现了多少次 的shell脚本,使用awk命令实现查找。如果这个文件很大,上了10g怎么办?
(1) awk的用法
awk \'BEGIN{ commands } pattern{ commands } END{ commands }\'
第一步:运行BEGIN{ commands }语句块中的语句。
第二步:从文件或标准输入(stdin)读取一行。然后运行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行反复这个过程。直到文件所有被读取完成。
第三步:当读至输入流末尾时,运行END{ commands }语句块。
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
示例:
每行按空格或TAB分割(默认情况),输出文本中的1、4项
$ awk \'{print $1,$4}\' log.txt
使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
$ awk -F \'[ ,]\' \'{print $1,$2,$5}\' log.txt
输出第二列包含 "t",并打印第二列与第四列
$ awk \'$2 ~ /t/ {print $2,$4}\' log.txt
计算文件大小:
$ ls -l *.txt | awk \'{sum+=$6} END {print sum}\'
(2)awk \'{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}\' access_log.txt |sort -g
以上是关于面试题集-linux的主要内容,如果未能解决你的问题,请参考以下文章