awk编程能力强大,文本处理能力突出。 首先准备一个材料,xinxi.txt (4)NR参数表示行号,比如,要打印xinxi.txt所有行,每行前面加行号,就应该这样写:
首先,来看使用awk的一个例子:
比如,列出最常用的五个历史命令:
结合其他命令,我们给出结果:
awk ‘{print $1}’ ~/.bash_history | sort | uniq -c | sort -rn | head -n 5
从这个例子可以看出,awk确实神奇,好用。是得好好学习一番了。awk要学习以下要点:
(1)print命令
print打印指定部分
例如:
awk ‘{print $0}‘ xinxi.txt
#打印xinxi.txt
print命令也可以用来打印匹配的某一行,比如:awk ‘/dmy/ {print}’ xinxi.txt 等同于awk ‘/dmy/’ xinxi.txt
print更强大的是可以打印需要的某几列,比如要打印name和score,就应该这样:
awk ‘{print $1,$6}’ xinxi.txt
(2)分隔符
默认分隔符是空格,如果需要改变,就要用-F指定,比如要打印/etc/passwd的所有用户,awk -F”:” ‘{print $1}’ /etc/passwd
(3)NF参数表示每行有几个字段
比如,awk ‘{print NF}’ xinxi.txt ,可以查看xinxi.txt每行有7个字段
使用 awk -F: ‘NF==5 {print }’ xinxi.txt 显示只有5个字段的行
没有打印结果,这是因为xinxi.txt字段都是7
awk ‘{print NR,$0}’ xinxi.txt
再举个例子,要同时打印xinxi.txt的第3行和第4行,就要这样写:
awk ‘NR3||NR4 {print}’ xinxi.txt
(5)取某个列中的最大值
比如,要取xinxi.txt中height的最大值,可以这样写:
awk ‘BEGIN {max=0} {if ($4+0>max+0) {max=$4;couter=$0}} END {print couter}’ xinxi.txt
(6)求某一列的总和和平均值
求总和,比如第六列score的总和,可以这样写:awk ‘{sum+=$6} END {print “sum=”,sum}’ xinxi.txt
要求平均值,只需要总和初以行数,sum/(NR-1)就可以
awk ‘{sum+=KaTeX parse error: Expected ‘EOF’, got ‘}’ at position 2: 6}̲ END {print “av…i}}’
(8)awk在运维工作中的使用例子
a.查看机器的ip列表
ifconfig -a | awk ‘/Bcast/ {print $2}’|awk -F: ‘{print $2}’
(b)统计所有状态码为 404 的请求
awk ‘($9~/404/) {print $9,$7}’ access.log | sort | uniq
感悟:awk知识点太多,太强大,今天先学习到这里,后面继续!
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算