awk
#user文件内容
Debian-snmp:x:124:126::/var/lib/snmp:/bin/false
zabbix:x:125:127::/var/lib/zabbix/:/usr/sbin/nologin
test:x:1001:1001:,,,:/home/test:/bin/bash
postfix:x:126:128::/var/spool/postfix:/usr/sbin/nologin
che:x:1002:1002:,,,:/home/che:/bin/bash前置指令 | awk 选项 条件 指令
awk 选项 条件 指令 文件
选项 -F 定义分隔符
指令print
条件root
内置变量 $1第一列 $2第二列 $0所有列 NR行号 NF列号awk '/the/{print $1,$3}' #awk默认以空格作为列的区分
awk '/the/{print NR}'awk '{print}' abc.txt #输出所有
awk '/to/{print}' abc.txt #输出有to的那行
awk '{print $2}' abc.txt 输出所有行的第二列
awk '/to/{print $2}' abc.txt 输出有to的那行的第二列
awk '{print NR}' abc.txt 输出每一行的行号
awk '{print NR $0}' abc.txt 输出每一行的行号,以及第一列的内容
awk '{print NR NF}' abc.txt 输出每一行的行号,以及每行有几列
awk -F: '{print $1,$5}' abc.txt
awk -F: '{print $1 "的家目录为" $2}' #输出常量加双引号即可ifconfig找不到该命令 #系统没有下载工具包
dnf -y install net-toolsroot@ubuntu:/opt# cat user
Debian-snmp:x:124:126::/var/lib/snmp:/bin/false
awk -F [:/] '/root/{print $11}' user #bin在第11列 每个:或/都是一列
awk -F: '{print "第"$NR"的用户是"$1}' user
df -h | awk '/\/$/{print "根分区的容量为"$4}' #\/$ 转义字符\ 将/变为普通斜杠
ifconfig eth0 | awk '/RX p/{print "网卡的接受数据量是"$5"字节"}'
ifconfig eth0 | awk '/RT p/{print "网卡的发送数据量是"$5"字节"}'BEGIN和END
BEGIN读取文件前执行,执行一次
END读取文件后执行,执行一次
awk 'BEGIN{print NR}{print NF}END{print NR}' user
0 读取文件前为0行
1 读取文件第一行只有一列
5 读取文件第二行只有5列
1 读取文件后,输出一共读取了几行 END中的NR是总行数
awk 'NEGIN{print "start"}{print $1}END{print "over"}' user
awk -F '{print $1"\t"$3"\t"$6}' user #\t的作用是tab键
echo-------------------------------------------------
Debian-snmp 124 /var/lib/snmp
zabbix 125 /var/lib/zabbix/
test 1001 /home/test
postfix 126 /var/spool/postfix
che 1002 /home/che
awk -F 'BEGIN{print "User\tUid\tName"}{print $1"\t"$3"\t"$6}END{print "总和"NR"行"}'~包含 !~不包含
awk -F: '$5~/root/{print}' user #第五列包含root的行
awk -F: '$5!~/root/{print}' user #第五列不包含root的行输入数字或字符串
== != > >= < <=
awk -F: '$3<3{print}' user
awk -F: '$3==3{print}' user
awk -F: '$3<=3{print}' user
awk -F: 'NR==2{print}' user #行数等于2
awk -F: 'NR>2{print}' user #行数大于2&&并且||或者
awk -F: 'NR>=3&&NR<=5{print}' user #找行号是大于3并且小于5
awk -F: 'NR==2||NR==4{print}' user #找行号是2或者4的都行
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员fancy
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果