首页 / LINUX / Linux三剑客之awk
Linux三剑客之awk
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux三剑客之awk,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4023字,纯文字阅读大概需要6分钟。
内容图文
![Linux三剑客之awk](/upload/InfoBanner/zyjiaocheng/942/ddea53a0cc5c4899ab66d1e3bb6b0686.jpg)
awk
1、描述
awk等同于gawk,擅长处理列以及数据信息的统计
2、语法结构
awk [参数] '模式-动作' 文件
3、awk内置变量
$NF The number of fields in the current input record. NR The total number of input records seen so far. FS The input field separator, a space by default. See Fields, above. $N 指定列数,$3代表第三列 $0 整行的文本内容;
4、实际操作过程
创建测试文件,下列文件使用空格分隔,不是table
[root@doctor-10 ~]# cat test.txt Zhang tingting java 192.168.12.10 Wang lili python 192.168.12.11 Wang haha scala 192.168.12.13 Zhang heihei php 192.168.10.14
-
根据指定行号查询
#打印指定行的内容 [root@doctor-10 ~]# awk 'NR==3' test.txt Wang haha scala 192.168.12.13 #打印第二行到第四行的信息 [root@doctor-10 ~]# awk 'NR==2,NR==4' test.txt Wang lili python 192.168.12.11 Wang haha scala 192.168.12.13 Zhang heihei php 192.168.10.14 #打印第二行,第四行的信息 [root@doctor-10 ~]# awk 'NR==2;NR==4' test.txt Wang lili python 192.168.12.11 Zhang heihei php 192.168.10.14
-
根据指定内容查找
#打印包含指定信息的内容 [root@doctor-10 ~]# awk '/Wang/' test.txt Wang lili python 192.168.12.11 Wang haha scala 192.168.12.13 #打印包含指定信息之间的内容 [root@doctor-10 ~]# awk '/Zhang/,/Wang/' test.txt Zhang tingting java 192.168.12.10 Wang lili python 192.168.12.11 Zhang heihei php 192.168.10.14 #打印指定信息的内容,不连续 [root@doctor-10 ~]# awk '/Zhang/;/Wang/' test.txt Zhang tingting java 192.168.12.10 Wang lili python 192.168.12.11 Wang haha scala 192.168.12.13 Zhang heihei php 192.168.10.14
-
查看指定列的信息
#查看姓王的同学的姓和名 [root@doctor-10 ~]# awk '/Zhang/{print $1,$2,$3}' test.txt Zhang tingting java Zhang heihei php #查看姓张的同学的IP地址 [root@doctor-10 ~]# awk '/Zhang/{print $NF}' test.txt 192.168.12.10 192.168.10.14
-
使用 -F 参数 指定分割符号
[root@doctor-10 ~]# awk -F "." '{print $1","$NF}' test.txt Zhang tingting java 192,10 Wang lili python 192,11 Wang haha scala 192,13 Zhang heihei php 192,14
使用多个分隔符
[root@doctor-10 ~]# awk -F "[ .]+" '/Zhang/{print $1,$2,$4,$5,$6,$NF}' test.txt Zhang tingting 192 168 12 10 Zhang heihei 192 168 10 14
-
找出职业是 java 或者 python的人的名字
[root@doctor-10 ~]# awk '$3~/^java|^python/{print $1,$2}' test.txt Zhang tingting Wang lili
-
找出第三列中以字母 a 或者字母 n 结尾的人的名字以及职业
#第一种方式 [root@doctor-10 ~]# awk '$3~/a$|n$/{print $1,$2,$3}' test.txt Zhang tingting java Wang lili python Wang haha scala #第二种方式 [root@doctor-10 ~]# awk '$3~/[an]$/{print $1,$2,$3}' test.txt Zhang tingting java Wang lili python Wang haha scala #第三种方式 [root@doctor-10 ~]# awk '$3~/(a|n)$/{print $1,$2,$3}' test.txt Zhang tingting java Wang lili python Wang haha scala
-
使用awk实现替换操作
#gsub g:gawk sub:substitue #语法格式: gsub(/要替换的内容/,"替换为……",替换的列)
将姓张的同学的最后一列中的 '.' 替换为 $
#两个命令之间使用; 分割 [root@doctor-10 ~]# awk '/Zhang/{gsub(/\./,"$",$NF);print $NF}' test.txt 192$168$12$10 192$168$10$14
-
打印非注释行以及非空行
[root@doctor-10 ~]# awk '/^$|^#/{print $0}' test.txt #注释信息 ? ? ? ? #文件结束了 [root@doctor-10 ~]# awk '!/^$|^#/{print $0}' test.txt Zhang tingting java 192.168.12.10 Wang lili python 192.168.12.11 Wang haha scala 192.168.12.13 Zhang heihei php 192.168.10.14
5、BEGIN 和END的使用
BEGIN:在指定awk命令之前完成的动作;
END:在指定完awk命令所完成的动作;
使用BEGIN制作表头
[root@doctor-10 ~]# awk 'BEGIN{print "姓","名","职业","IP"}{print $0}' test.txt |column -t 姓 名 职业 IP Zhang tingting java 192.168.12.10 Wang lili python 192.168.12.11 Wang haha scala 192.168.12.13 Zhang heihei php 192.168.10.14
使用END统计/etc/services中的空行个数
[root@doctor-10 ~]# grep -c '^$' /etc/services 17 [root@doctor-10 ~]# i=0 [root@doctor-10 ~]# awk '/^$/{i++}END{print i}' /etc/services 17
使用END实现1-100之间的求和
[root@doctor-10 ~]# seq 100 | awk '{sum=sum+$1}END{print sum}' 5050
未完待续……
内容总结
以上是互联网集市为您收集整理的Linux三剑客之awk全部内容,希望文章能够帮你解决Linux三剑客之awk所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。