
[root@tomcat test]# awk '{print $1, $3}' ps.txt
[root@tomcat test]# awk -F: '{print $1, $3}' ps.txt
$1:第一列的内容,依次类推,$10:第十列的内容$0:所有列的内容NR:代表行号NF:代表列号,$NF就会取到每行的最后一列的内容# 打印所有的行号
[root@tomcat test]# awk -F: '{print NR}' ps.txt
# 打印每一行所有的列号
[root@tomcat test]# awk -F: '{print NF}' ps.txt
# 打印第五行第五列的元素
[root@tomcat test]# awk -F: 'NR==5{print $5}' ps.txt
[root@tomcat test]# awk '{print "haha", "xixi"}' ps.txt
haha xixi
haha xixi
# 以root开头的行
[root@tomcat test]# awk -F: '/^root/{print}' ps.txt
root:x:0:0:root:/root:/bin/bash
# 第一个字段不以root开头
[root@tomcat test]# awk -F: '$1!~/^root/{print}' ps.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
# 输出第二行的数据
[root@tomcat test]# awk -F: 'NR==2{print}' ps.txt
bin:x:1:1:bin:/bin:/sbin/nologin
# 输出每行超过5列的数据
[root@tomcat test]# awk -F: 'NF>5{print}' ps.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
#列出uid小于等于2的用户
[root@tomcat test]# awk -F: '$3>=0 && $3<=2{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#列出uid为1或7的用户
[root@tomcat test]# awk -F: '$3==1 || $3==7{print}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
# 输出奇数行
[root@tomcat test]# awk -F: 'NR%2==1{print}' ps.txt
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
BEGIN{}:执行一次,读取文档之前执行,一般用来初始化操作{}:逐行读入文档,执行想要的操作END{}:执行一次,逐行任务完成后执行,一般用来输出结果# 预处理任务不需要文件,多任务用分号隔开
[root@tomcat test]# awk 'BEGIN{a=10;print a+=10}'
20
# 统计使用bash的用户数量
[root@tomcat test]# awk -F: 'BEGIN{x=0} /bash$/{x++} END{print x}' /etc/passwd
2
# 定义数组
[root@tomcat test]# awk 'BEGIN{a[0]=1;a[1]=2;print a[0],a[1]}'
1 2
-n: 按数字排序-k: 指定按第几列排-r: 按降序排(默认升序)[root@tomcat test]# awk '{ip[$1]++} END{for(i in ip){print i,ip[i]}}' /etc/httpd/logs/access_log | sort -nr -k 2
192.168.88.88 5
192.168.88.80 1
::1 1
注意:在end任务重,i会拿到ip这个数组的下标
