awk详解

awk.png

——————————

课外练习

只处理用户ID为奇数的行,并打印用户名和ID号

[root@localhost ~]# awk -F: '{if($3%2!=0) {print $1,$3}}' /etc/passwd

显示系统的普通用户,并打印用户及ID

[root@localhost ~]# awk -F: '{if($3>=500) {print $1,$3}}' /etc/passwd

显示系统用户是“/bin/bash"的用户,并打印用户名

[root@localhost ~]# awk -F: '/\/bin\/bash$/{print $1}' /etc/passwd

统计普通用户的个数

[root@localhost ~]# awk -F: -v i=0 '{if($3>=500) {i++}}END{print i}' /etc/passwd

统计文本的总行数

[root@localhost ~]# awk -v i=0 '{i++}END{print i}' /etc/passwd

利用awk显示文件名

[root@localhost ~]# awk 'END{print FILENAME}' /etc/passwd

格式化输出统计数据

[root@localhost ~]# awk -F: '{printf "UID: %-5s  NAME: %3s\n",$3,$1}' /etc/passwd

只显示ID为1000的用户的相关信息

[root@localhost ~]# awk -F: '{if($3==1000) {print $0}}' /etc/passwd

查找“root”关键字的行

[root@localhost ~]# awk '/root/{print $0}' /etc/passwd

利用awk模拟tail -1 的效果

[root@localhost ~]# awk 'END{print $0}' /etc/passwd

打印一个表头,并且打印用户名和ID

[root@localhost ~]# awk -F: 'BEGIN{printf "USERNAME      UID\n------------------\n"}{printf "%-10s %5s\n",$1,$3}' /etc/passwd

打印一个表头和表尾,并打印用户名,ID,及shell

[root@localhost ~]# awk -F: 'BEGIN{printf "USERNAME         UID  SHELL\n"}{printf "%-13s %5s %-s\n",$1,$3,$7}END{printf "USERNAME         UID  SHELL\n"}' /etc/passwd

对文本中的字段进行字符个数统计

[root@localhost ~]# awk '{for(i=1;i<=NF;i++) {count[$i]++}}END{for(k in count) {print k,count[k]}}' /etc/fstab

打印字符个数大于等于8的字段

[root@localhost ~]# awk '{if(NF>8) {print $0}}' /etc/fstab

统计系统中shell的类型,并打印shell引用的次数

[root@localhost ~]# awk -F: '{count[$7]++}END{for(i in count) {print i,count[i]}}' /etc/passwd

统计fstab文件中,各文件系统被引用的次数

[root@localhost ~]# awk '/^[^#]/{filesystem[$3]++}END{for(i in filesystem) {print i,filesystem[i]}}' /etc/fstab

统计系统中各TCP连接状态的数量

[root@localhost ~]# netstat -tan | awk '/^tcp/{split($5,ip,":");if(ip[1]=="")next;count[ip[1]]++}END{for(i in count) {print i,count[i]}}'

统计web站点的用户访问次数

[root@localhost ~]# awk '/^[^#]/{filesystem[$3]++}END{for(i in filesystem) {print i,filesystem[i]}}' /etc/fstab

统计正与系统建立连接的IP地址(ESTABLISHED),并统计建立连接的连接数量

[root@localhost ~]# ss -tan | awk '/^ESTAB/{split($5,ip,":");state[ip[1]]++}END{for(i in state) {print i,state[i]}}'

将文本的重复行去掉

[root@localhost ~]# awk '!a[$0]++' test.txt

原创文章,作者:M20-1--孔祥文,如若转载,请注明出处:http://www.178linux.com/49081

(0)
M20-1--孔祥文M20-1--孔祥文
上一篇 2016-09-25
下一篇 2016-09-25

相关推荐

  • 【26期】Linux第一周学习小总结

        知识不在长短,而在于其中的精炼程度,字典每个字没有一页的篇幅,却被大面积推广,之所以没有再把学到的全部搬运到博客上来,就是为了给大家一点可看的东西,也许我自己认为的精炼是有点简短了,那我就再更新一下,再复习一下,学到的whatis 和 man命令。     第一周匆匆而过,学过的知识,过遍脑…

    2017-07-14
  • Linux 第九天: 练习和作业

    Linux 第九天: 练习和作业       编写脚本/root/bin/systeminfo.sh 显示当前主机系统信息 包括主机名 ipv4地址 操作系统版本 内核版本 CPU信号 内存大小 硬盘大小 server_ip=`ifconfig|grep'inet\b'|grep -v '…

    Linux干货 2016-08-15
  • 马哥教育网络班20期+第二周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。  答:文件管理类命令有: touch :创建一个新文件 示例:在/tmp/目录下创建一个1.log文件 touch /tmp/1.log mv:移动文件  示例:将/etc/fstab文件移至/tmp/目录中。  mv /etc/fstab /tmp/…

    Linux干货 2016-06-23
  • http协议

    ##socket套接字– 套接字,进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换。– socketAPI:封装了内核中所提供的socket通信相关的系统调用– socketDomain:根据其所使用的地址– AF_INET:Address Family,Ipv4&#8…

    Linux干货 2017-12-06
  • 逻辑卷管理器

    逻辑卷管理器(LVM)     允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小     允许在多个物理设备间重新组织文件系统         • 将设备指定为物理卷   …

    Linux干货 2016-09-06
  • Linux系统时间简单修改方法

          Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。Linux中的所有命令(包括函数)都是采用的系统时钟设置。Linux操作系统运行…

    Linux干货 2015-06-12

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-26 09:49

    图画的不错,赞一个,awk是一个很方便的文本格式化工具,这也是以后面试题必会遇到的面试题,希望下来多加练习,熟练掌握,