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

相关推荐

  • redis主从复制(3)— 复制超时

    1、repl-timeout前两篇[1]关于redis主从复制的文章解释了一些因为slave replication buffer或者replication backlog参数的错误配置(或者默认参数值)导致主从复制中断的现象。redis里面的repl-timeout参数值也太小也将会导致复制不成功。top redis headaches for devop…

    Linux干货 2016-04-05
  • 程序包管理rpm&yum&编译安装

    centos6.6程序包管理 二进制应用程序的组成部分: 二进制文件,库文件,配置文件和帮助文件 程序包管理器:rpm rpm包管理器的前端工具:yum 程序包之间存在依赖关系 rpm的命名方式: name_VERSION_release.arch.rpm     VERSION: major.minor.r…

    Linux干货 2016-07-07
  • Keepalived介绍 , 配置说明 , 及实际应用

    1. Keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。 1.1 VRRP协议 VRRP全称 Virt…

    Linux干货 2016-11-04
  • 推荐-VSftpd使用MySQL存储虚拟用户进行认证

    VSftpd使用MySQL存储虚拟用户进行认证 VSftpd使用MySQL存储虚拟用户进行认证 前言 实验拓扑 实验环境 实验步骤 安装vsftpd并测试 安装MySQL并创建对应用户和表 配置vsftpd基于MySQL表的虚拟用户 测试 测试tom用户的权限 测试anyisalin用户的权限 总结 前言 周一的时候做这个实验失败了,当时以为是pam_mys…

    Linux干货 2016-04-04
  • sed的基本用法详解

    在Linux的世界中,有着一个文本三剑客的称呼,它们分别代表grep(文本过滤),sed(流编辑器),awk(gawk)(报告生成器)。 它们是强大的文本处理工具,了解并掌握它们,可以让你对文本的处理更加从容和轻松。 今天我们主要是围绕sed来进行分析。 一、初识sed sed:Stream Editor 从名字上也可以直观的了解到它是一个流编辑工具。何为流…

    Linux干货 2015-06-08
  • HAProxy服务配置

    HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件。 相较与 Nginx,HAProxy 更专注与反向代理,因此它可以支持更多的选项,更精细的控制,更多的健康状态检测机制和负载均衡算法。 四层和七层负载均衡的区别: 四层: 通过分析IP层及TCP/UDP层的流量实现的基于“IP+端口”的负载均衡。 七层: …

    Linux干货 2017-05-19

评论列表(1条)

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

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