基本的awk执行过程
#passwd文件的第二行的第一列和第二列
[root@oldboyedu01-nb ~]# awk -F ":" 'NR==2{print $1,$2}' /etc/passwd
bin x

awk 参数 '模式{动作}' 文件
awk 参数 '条件(找谁){干啥}' 文件

模式匹配:模式与动作

通过正则表达式作为模式
mkdir -p /server/files/
cat >>/server/files/reg.txt<<EOF
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
EOF

显示Xiaoyu的姓氏和ID号码

[root@oldboyedu01-nb files]# awk '/Xiaoyu/' reg.txt
Zhang Xiaoyu 390320151 :155:90:201
[root@oldboyedu01-nb files]# awk '/Xiaoyu/{print $1,$2,$3}' reg.txt
Zhang Xiaoyu 390320151
[root@oldboyedu01-nb files]# #awk '第2列中包含Xiaoyu' reg.txt
[root@oldboyedu01-nb files]# awk '$2~/Xiaoyu/' reg.txt    ###显示第二列中包含Xiaoyu的
Zhang Xiaoyu 390320151 :155:90:201
[root@oldboyedu01-nb files]# awk '$2~/Xiaoyu/{print $1,$2,$3}' reg.txt   ###  第二列中包含Xiaoyu的行,把第一列,第二列,第三列打印出来
Zhang Xiaoyu 390320151

[root@oldboyedu01-nb files]# awk '/Xiaoyu/' reg.txt
Zhang Xiaoyu 390320151 :155:90:201
[root@oldboyedu01-nb files]# awk '$0~/Xiaoyu/' reg.txt     ###$0 表示这一整行
Zhang Xiaoyu 390320151 :155:90:201
[root@oldboyedu01-nb files]# awk '$2~/Xiaoyu/' reg.txt
Zhang Xiaoyu 390320151 :155:90:201

显示所有以41开头的ID号码的人的全名和ID号码
[root@oldboyedu01-nb files]# awk '$3~/^41/' reg.txt    
Zhang Dandan 41117397 :250:100:175
Liu Bingbing 41117483 :250:100:175
[root@oldboyedu01-nb files]# awk '$3~/^41/{print $1,$2,$3}' reg.txt
Zhang Dandan 41117397
Liu Bingbing 41117483

显示所有ID号码最后一位数字是1或5的人的全名
[root@oldboyedu01-nb files]# awk '$3~/[15]$/' reg.txt  
Zhang Xiaoyu 390320151 :155:90:201
Wu Waiwai 70271111 :250:80:75
Wang Xiaoai 3515064655 :50:95:135
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
[root@oldboyedu01-nb files]# awk '$3~/[15]$/{print $1,$2}' reg.txt
Zhang Xiaoyu
Wu Waiwai
Wang Xiaoai
Li Youjiu
Lao Nanhai

显示Xiaoyu的捐款.每个值时都有以$开头.如$520$200$135
gsub(/目标/,"替换为什么",第几列)
gsub(/目标/,"替换为什么") == gsub(/目标/,"替换为什么",$0)

awk ‘{gsub(/匹配/,"替换成什么",$4);print}’ filename

[root@oldboyedu01-nb files]# awk '{gsub(/:/,"$",$4)}' reg.txt   
[root@oldboyedu01-nb files]# awk '{gsub(/:/,"$",$4);print}' reg.txt  ####将第四列的冒号替换为$
Zhang Dandan 41117397 $250$100$175
Zhang Xiaoyu 390320151 $155$90$201
Meng Feixue 80042789 $250$60$50
Wu Waiwai 70271111 $250$80$75
Liu Bingbing 41117483 $250$100$175
Wang Xiaoai 3515064655 $50$95$135
Zi Gege 1986787350 $250$168$200
Li Youjiu 918391635 $175$75$300
Lao Nanhai 918391635 $250$100$175

####
[root@oldboyedu01-nb files]# awk '$2~/Xiaoyu/' reg.txt
Zhang Xiaoyu 390320151 :155:90:201
[root@oldboyedu01-nb files]# awk '$2~/Xiaoyu/{gsub(/:/,"$");print}' reg.txt   ####第二列包含小于的行的冒号替换成$
Zhang Xiaoyu 390320151 $155$90$201

[root@jinjidong files]# awk '$2~/Xiaoyu/{gsub(/:/,"$",$4);print}' reg.txt         #####第二列包含小于的行的第四列的冒号替换成$
Zhang :Xiaoyu 390320151 $155$90$201

特殊模式BEGIN和END
BEGIN{} BEGIN里面的内容,会在awk读取文件内容之前运行。
测试,计算。

END{}*** END{}里面的内容,会在awk读取完文件的最后一行之后运行。
用来显示最终结果。
先计算,END显示结果。

统计/etc/services文件里面的空行数量

i=i+1 统计
[root@oldboyedu01-nb files]# awk '/^$/{i=i+1;print i}' /etc/services
1
2
3
4
5
6

[root@oldboyedu01-nb files]# awk '/^$/{i=i+1}END{print i}' /etc/services
16

最新文章

  1. 在SqlServer2008R2中,在一张表上加上insert、update、delete触发器(带游标)
  2. C语言连接SQLSERVER数据库
  3. libuv在cocos2d-x中的使用
  4. linux下安装openssh-server
  5. [LeetCode] Divide Two Integers( bit + 二分法 )
  6. js保留n位小数
  7. SQL 过滤 having
  8. java 中多线程和锁的使用
  9. 11 Indexes
  10. telnet localhost 8089 ==》》命令使用
  11. windows下ncl生成tiff图(案例)
  12. AJAX 跨域 :Access-Control-Allow-Origin
  13. ASP.Net TextBox控件只允许输入数字
  14. 关于ThreadLocal和一般的线程同步的详细解释
  15. Android视频录制从不入门到入门系列教程(四)————Camera Parameter
  16. Elasticsearch学习笔记(十二)filter与query
  17. java+jenkins+testng+selenium+ant
  18. oracle常用函数案例
  19. Codeforces Round #489 (Div. 2) E. Nastya and King-Shamans(线段树)
  20. 电商项目中使用Redis实现秒杀功能

热门文章

  1. 752. [BJOI2006] 狼抓兔子
  2. 51nod 1267 4个数和为0 思路:哈希map+避免重复的点
  3. hdu 6082 - 完全背包,打表。
  4. 初识Git(一)
  5. ActiveMQ学习笔记(17)----Message高级特性(一)
  6. ActiveMQ学习笔记(5)----Broker的启动方式
  7. SpringBoot学习笔记(1)----环境搭建与Hello World
  8. Site Isolation Design Document
  9. 关于PY的推导式
  10. 【BZOJ3678】Wangxz和OJ