AWK命令
awk命令
awk是一个文本分析工具。把文件逐行读入,默认已空格
将每行切片,切开的部分再做分析处理。
使用方法
awk '{pattern + action}' {filenames}
pattern表示awk在数据中查找的内容
action表示在查找匹配内容时所执行的一系列命令
调用awk
此处只记录命令行方式
awk [-F field-separator] 'commands' input-file(s)
cimmands是真正的awk命令
[-F域分隔符] 可选
input-files(s)待处理文件
实例
1.假设 last -n 5 //读取前5行的用户登录信息
last -n 5 | awk '{print $1}'//只读取用户名
2.显示/etc文件夹passwd文件的账户
cat /etc/passwd | awk -F ':' '{print $1}'
-F ':'指定每行信息以:切分
3.显示/etc文件夹下passwd文件的账户和账户对应的shell
cat /etc/passwd | awk -F ':' '{print $1"\t"$7}'
4.BEGIN和END
cat /etc/passwd | awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nsh"}'
5.awk -F: '/root/' /etc/passwd
[root@XXXXXXXXX ~]# awk -F ':' '/root/{print $1}' /etc/passwd
root
operator
awk内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
#awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd
awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd
awk编程
1.统计/etc/passwd的账户人数
awk 'BEGIN{count=0} {count=count+1;print $0} END{print "count is ",count}' /etc/passwd
2.统计文件夹下文件占用字节数
ll | awk 'BEGIN{size=0} {size=size+$5} END{print "size is ",size}'
3.统计文件夹下文件占有M
ll | awk 'BEGIN{size=0} {size=size+$5} END{print "size is ",size/1024/1024,"M"}'
4.条件语句
ll | awk 'BEGIN{size=0} {if($5 <20){size=size+$5;}} END{print "size is ",size}'
5.数组
awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd
浙公网安备 33010602011771号