awk命令的工作原理
与sed一样,均是一行一行的读取、处理
sed作用于一整行的处理,而awk将一行分成数个字段来处理
awk命令的简要处理流程
awk -F":" '{print $1,$2}' /etc/passwd
awk -F: '{print $1,$2}' /etc/passwd
-F --> 指定分隔符,默认的分隔符是空白(空格+tab,enter)
print是awk内部的命令,用于输出
, --> 引用输出分隔符,默认输出分隔符是一个空格
分隔符:
输入分隔符 --> -F
输出分隔符 --> 定义 OFS="#" --> output field separater
awk命令的完整语法
BEGIN和END里的命令只执行一次
BEGIN和END必须大写
BEGIN和END不是必须的
awk的基本命令
awk命令的操作符
awk的内部变量
- NF:每行$0的字段数
- NR:当前处理的行号
- FS:当前的输入分隔符,默认是空白字符(空格和tab键)
- OFS:当前的输出分隔符,默认是空格字符(空格)
awk的内置函数
- length:统计没有设置密码的用户的数量,同时输出用户名
- substr:统计没有设置密码的用户的数量,同时输出用户名前2个字符
awk命令的结构化语句
awk里数组
遍历取数据的方法
- for循环
- while循环
练习:
1、只显示df -h结果的第一列文件系统
df -h|awk '{print $1}'
2、显示passwd文件的第5行和第10行的行号和用户名
awk -F'[::]' 'NR==5,NR==10{print NR,$1}' /etc/passwd
3、使用NF变量显示passwd文件倒数第二列的内容
awk -F'[::]' '{print NF,$6}' /etc/passwd
4、显示passwd文件中第5到第10行的用户名
awk -F'[::]' 'NR==5,NR==10{print $1}' /etc/passwd
5、显示passwd文件中第7列不是bash的用户名\
6、显示passwd文件中行号是5结尾的行号和整行内容
7、用ifconfig/ip add 只显示ip yum install net-tools -y -->安装ifconfig命令的软件
8、ifconfig 命令后使用awk显示ens33的入站流量和出站流量(字节)
9、使用awk命令统计以r开头的用户数目,显示如下效果
10、显示每隔2秒的流量的变化[root@lamp-test ~]# watch -n 2 -d ifconfig|awk 'NR==5{print $5}'
11、统计/etc/passwd文件里以r开头的用户的数量,并且显示出用