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 14:53
下一篇 2016-09-25 16:46

相关推荐

  • 0805 作业

     201608051、当天课程内容笔记2、当天练习3、预习4、取本机ip地址 5、取各分区利用率的数值 6、统计/etc/init.d/functions 文件中每个单词出现的次数,并按频率从高到低显示 7、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/functions/"  取目录名…

    Linux干货 2016-08-07
  • 7.磁盘及文件系统管理

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@localhost ~]# fdisk /dev/sd…

    Linux干货 2017-08-21
  • Linux三剑客之sed

     Sed简介       sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处 理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存…

    Linux干货 2016-08-12
  • 网络班N22期第四周博客作业

    一、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@bogon ~]# cp -r /etc/skel /home/tuser1 && chmod -R 60…

    Linux干货 2016-09-05
  • LVS-几种负载方式的区别

    LVS的原理很重要,很重要。每一个知识点都要做到熟记与脑,谨记于心,张口就来。 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器. 很好的可伸缩性(Scal…

    Linux干货 2017-05-11
  • LVM创建实例及相关注释

    LVM创建    pv—>vg—->lv—->快照 创建前准备了四块1g硬盘分别为:sdb  sdc sdd  sde,并分别给四块盘划分了1G的空间,并指定了分区系统类型为8e(即Linux LVM) [root@localhost ~]# fdisk /dev/…

    Linux干货 2015-06-08

评论列表(1条)

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

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