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


晓月寒轩
1 声望0 粉丝