打印每行第一个字段(passwd字段是用:隔开的):正则表达式
[root@iZryxshkbkz2x2Z ~]# awk -F ':' '{print $1}' passwd root bin
打印每行第一个和第二个字段,并用空格隔开:bash
提示: 用逗号或" "服务器
[root@iZryxshkbkz2x2Z ~]# awk -F ':' '{print $1,$2}' passwd 或 [root@iZryxshkbkz2x2Z ~]# awk -F ':' '{print $1" "$2}' passwd
NR: 每行的记录号ui
NF: 字段数量变量code
FILENAME: 正在处理的文件名blog
[root@iZryxshkbkz2x2Z ~]# awk -F ':' '{print NF,NR}' passwd 7 1 7 2 7 3 [root@iZryxshkbkz2x2Z ~]# awk -F ':' '{print FILENAME}' passwd # 每行都显示passwd passwd passwd passwd
1 从PASSWD 打印出uid 大于10 的行:awk
[root@iZryxshkbkz2x2Z ~]# awk -F ':' '{if($3>10)print "NR :"NR,"Uid: " $3}' passwd NR :11 Uid: 11 NR :12 Uid: 12 NR :13 Uid: 13 NR :14 Uid: 14 NR :15 Uid: 99 NR :16 Uid: 69 NR :17 Uid: 499 NR :18 Uid: 89 NR :19 Uid: 74
2 从服务器log 中找出error 发生的日期(使用正则):变量
[root@iZryxshkbkz2x2Z ~]# awk '/Error/{print $1}' fresh.log
案例1 使用正则表达式:扩展
[root@iZryxshkbkz2x2Z ~]# awk -F ':' '$1~/^root/' passwd #必定要加 ~ root:x:0:0:root:/root:/bin/bash
案例2: 从passwd 中取出不以 ‘r’ 开头的行数和用户名im
[root@iZryxshkbkz2x2Z ~]# awk -F ':' '$1!~/^r/{print "NR: "NR,"User: "$1}' passwd NR: 2 User: bin NR: 3 User: daemon NR: 4 User: adm
案例3:passwd 中UId 大于10:
[root@iZryxshkbkz2x2Z ~]# awk -F ':' '$3>10{print "NR: "NR,"Uid: ",$3}' passwd NR: 11 Uid: 11 NR: 12 Uid: 12 NR: 13 Uid: 13
案例: 从passwd中,打印出行号,Uid制表
[root@iZryxshkbkz2x2Z ~]# awk -F ':' 'BEGIN{print "NR Uid"}{print NR,$3}END{print "======FILENAME==="}' passwd NR Uid 1 0 2 1 3 2 4 3 5 4