命令主要用法
  -格式1:前置命令 | awk [选项] '[条件]{编辑指令}'
  -格式2:awk [选项] '[条件]{编辑指令}' filename

常用命令选项
  -F:指定分隔符,可省略(默认空格或者Tab位)
  -f:调用awk脚本尽心个处理
  -V:调用外部shell变量

内置变量
  变量       用途
  FS        保存或设置字段分隔符,如FS=":"
  $n        指定分隔的第n个字段,例如$1,$4分别表示第1例,第4例
  $0        当前读入的整行文本内容
  NF        记录当前处理行的字段个数(有多少列)
  FNR        记录当前处理行在原文本内的行号
  NR        记录当前已经读入行的数量(多个文本一起读取时,行数累加)
  FILENAME  当前处理的文件名
  ENVIRON   调用shell环境变量,格式:ENVIRON["变量名"]

awk过滤的时机
  BEGIN{}
    读入第一行文本之前执行
    一般用来初始化操作
  逐行处理{}
    逐行读入文本执行相应的处理
    是最常见,用得最多的编辑指令块

  END{}
    处理完最后一行文本后执行
    一般用来统计或处理结果
    

[root@localhost ~]# awk '{print "第" FNR"行" ,"有"NF"列"}' a.txt
第1行 有2列
第2行 有4列
第3行 有2列
第4行 有3列

1)输出当前用户的UID

[root@localhost ~]# awk -F: '$1==ENVIRON["USER"]{print $3}' /etc/passwd

2)预处理

[root@localhost ~]# awk 'BEGIN{a=10;print a+10}'

3)统计使用bash的用户数量

[root@localhost ~]# awk 'BEGIN{x=0}/\<bash$/{x++}END{print x}' /etc/passwd

awk处理条件概述
  格式
    awk [选项] '[条件]{指令}' filename
  条件的表现形式
    正则表达式
      /正则内容/
      ~匹配,!~不匹配
    数值/字符串比较
      ==,!=,>=,<=,>,<等
    逻辑比较
      &&逻辑与:期望多条件都成立
      ||逻辑或:只要有一个条件成立即满足要求
    运算符
      -,+,*,/,%,++,--,+=,-=,*=,/=

1)正则内容

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

2)~匹配,!~不匹配

[root@localhost ~]# awk -F: '$7!~/nologin/{print}' /etc/passwd
root:x:::root:/root:/bin/bash
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt

3)==,!=,>=,<=,>,<等,输出第二行文本

[root@localhost ~]# awk 'NR==2{print}' /etc/passwd
bin:x:::bin:/bin:/sbin/nologin

4)&&逻辑与:期望多条件都成立

[root@localhost ~]# awk -F: '$3>=0&&$3<=10{print $1,$3}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp

5)运算符,统计文本总字段数量

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

awk流程控制
  单分支
    if(条件){指令}
  双分支
    if(条件){指令}else{指令}
  多分支
    if(条件){指令}else if{指令}else{指令}

  while循环
    while(条件){指令}
  do while
    do{指令}while(条件)

  for循环
    for(初始值;条件;步长){指令}

1)统计UID小于或等于500的用户个数

[root@localhost ~]# awk -F: 'BEGIN{i=0;j=0}{if($3<=500){i++}else{j++}}END{print i,j}' /etc/passwd
 

2)统计root出现次数

[root@localhost ~]# awk -F[:/] '{i=1}{while(i<=NF){if($i~/root/){j++};i++}}END{print j}' /etc/passwd

3)for循环

[root@localhost ~]# awk 'BEGIN{for(i=0;i<=10;i++){print i}}'

数组
  定义数组
    格式:数组名[下标]=元素值
  调用数组
    格式:数组名[下标]
  遍历数组
    用法:for(变量 in 数组名){print 数组名[变量]}
  数组的经典使用
    去除文本重复行:awk '!a[$2]++{print $2}' filename
    逐行分析,遇到重复行就跳过

1)去重

[root@localhost ~]# cat a.txt 

[root@localhost ~]# awk '!a[$2]++{print $2}' a.txt

2)列出用户登陆shell的种类

[root@localhost ~]# awk -F: '!shell[$7]++{print $7}' /etc/passwd
/bin/bash
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt

3)列出用户登陆shell的种类及个数,类似的可以统计web访问ip及访问次数

[root@localhost ~]# awk -F: '{shell[$7]++}END{for(i in shell){print i,shell[i]}}' /etc/passwd
/bin/sync
/bin/bash
/sbin/nologin
/sbin/halt
/sbin/shutdown
[root@localhost ~]# awk -F: '{shell[$7]++}END{for(i in shell){print i,shell[i]}}' /etc/passwd | sort -nr -k2
/sbin/nologin
/bin/bash
/sbin/shutdown
/sbin/halt
/bin/sync

4)统计nginx访问最多的ip

[root@ nginx]$ sudo awk '{ip[$1]++}END{for(i in ip) {print i,ip[i]}}' access.log | sort -nr -k2
146.145.196.170
111.7.10.21
124.25.17.151
47.92.114.243
11.7.100.24
111.7.100.22
111.7.100.20
106.14.217.247
47.92.126.167
11.7.100.23
111.7.10.19
111.7.100.25
111.7.10.18
111.7.100.27
111.7.10.26
80.82.70.187
83.143.86.62
80.82.78.104

awk命令的基本使用的更多相关文章

  1. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  2. awk命令详解

    搜索 纠正错误  添加实例 awk 文本和数据进行处理的编程语言 补充说明 awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件 ...

  3. Linux安全基础:awk命令的使用

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  4. AWK命令学习

    使用方法 awk 'pattern {action}' {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到 ...

  5. awk 命令

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  6. AWK命令的用法

    1.awk命令简介: awk是一种可以处理数据.产生格式化报表的语言,功能十分强大. awk的工作方式是读取数据,将每一行数据视为一条记录(record)每笔记录以字段分隔符分成若干字段,然后输出各个 ...

  7. [Linux] linux awk命令详解

    reference : http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于g ...

  8. awk命令简单介绍

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  9. Linux的awk命令

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  10. awk命令--update20150120

    简介 awk是一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符分割成field,切开的部分再进行各种分析处理. 模式和动作: 任何awk语句都是由模式和动作组成,模式部分决定动作语句何时触发 ...

随机推荐

  1. nginx负载均衡一:基础知识

    基础信息 nginx 的 upstream目前支持 4 种方式的分配  1).轮询(默认)  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.  2).weight ...

  2. 斯特林公式 ——Stirling公式(取N阶乘近似值)(转)

    斯特灵公式是一条用来取n阶乘近似值的数学公式.一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用.从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确. 公式为:    ...

  3. Java -- POI -- 随笔汇总

    1. 判断指定的单元格是否是合并单元格 /** * 功能:判断指定的单元格是否是合并单元格 * 原理:excel中的合并单元格其实就是首单元格,只不过该单元格增加了 rowspan和colspan两个 ...

  4. Mac OSX安装启动 zookeeper

    安装 zookeeper支持brew安装 ➜ ~ brew info zookeeper zookeeper: stable (bottled), HEAD Centralized server fo ...

  5. iOS - WKWebView加载不受信任的https (因用到IP地址加端口号去请求数据)

    1.描述:因公司域名临时出现问题,所以项目中引用到了IP地址加端口号去请求数据,因而造成在wkwebView中某些网址打不开,查看错误是因为服务器证书无效,实际就是不受信任; 2.解决办法:在plis ...

  6. 1.浅谈CLR

    1.什么是CLR CLR(Common Language Runtime)公共语言远行时,是一个可由多种编程语言使用的“远行时”.CLR的核心功能(比如内存管理.程序集加载.安全性.异常处理和线程同步 ...

  7. spring框架排错

    1.格式错误. http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/mvc/sp ...

  8. MFC 应用程序中使用管道代码示意

    STARTUPINFO sinf = {0}; PROCESS_INFORMATION pinf = {0}; SECURITY_ATTRIBUTES sa = {0}; HANDLE hPipeOR ...

  9. python金融与量化分析----Jupyter Notebook使用

    Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...

  10. WebSphere Application Server V8.5.5.0

    Downloadable files Abstract IBM WebSphere Application Server Version 8.5.5 Refresh Pack for all plat ...