awk 一种编程语言
语法格式:awk 【option】‘pattern{action}‘【file】... awk [选项] ‘条件{动作}‘ [文件] ...
注意:awk 命令及后面的选项和文件里,每个元素之间都要至少要有一个空格
选项说明:
| 参数选项 |
解释说明 |
| -F |
指定字符安分隔符 |
| -v |
定义或修改一个 awk 内部的变量 |
| $ |
取、引用 |
| $1 |
第一个列 |
| $0 |
整行 |
| $NF |
最后一行 |
| $(NF-1) |
倒数第二行 |
| RS |
每个记录读入的时候的分隔符(类似于换行符 \n) |
| NR |
行号,记录的数 |
| ORS |
输出时候的分隔符 |
关系运算符
| 运算符 |
含义 |
示例 |
| < |
小于 |
x < y |
| <= |
小于等于 |
x <= y |
| == |
等于 |
x == y |
| != |
不等于 |
x != y |
| >= |
小于 |
x < y |
| < |
大于等于 |
x >= y |
| > |
大于 |
x > y |
| ~ |
与正则表达式匹配 |
x~/y/ |
| !~ |
与正则表达式不匹配 |
x!~y |
案例一:
awk 环境简介

案例二:
awk执行过程:
- awk 读入第一行内容
- 判断是否符合模式中的条件(如:NR>=2)
a. 如果匹配则执行对应的动作(如:{print $0})
b. 如果不匹配条件,继续读取下一行
- 继续下一行
- 重复过程 1-3,知道读取到最后一行(EOF:end of file)
关于记录的简单说明:
- 大象放冰箱分几步?打开冰箱门,把大象放进去,关闭冰箱门。
- 对使用 NR、NF、$数字,配合调试你的 awk 命令。
- NR 存放着每个记录的号(行号)读取新行时候会自动 +1
- RS 是记录的分隔符,简单理解就是可以指定每个记录的结尾标志。
- 用 RS 代替 \n
- RS 作用就是表示一个记录的结束
- FS 标志着每个区域的结束
awk 的基本结构
awk BEGIN{coms} /pattern/{coms} END{coms}
开始模块,/找谁/{干啥},结束模块
- BEGIN 和END 模块只能有一个,BEGIN{}BEGIN{} 或者 END{}END{}
- 找谁干啥模块,可以有多个(例如:NR==2{print $1} NR==5{print $0})
案例三:
参数 RS,NR 举例


说明:RS 为空值时,在行手打印输出记录号,并打印出每一行 $0 的内容
正则表达式简单举例

注意:$1~ 表示匹配第一列(第一个区域),o{1,2} 表示条件有一个或两个 o,{print NR,$1,NF} 表示打印 行号,第一列,最后一列
案例四:
使用 awk 取出对应的端口号、

统计文件里面的空行数量

new 文件里面,以空格为分隔符,区域 3 大于 15,有多少行



使用 awk 实现 1 加到 100 的值

Linux常用命令——awk
原文:http://blog.51cto.com/12384628/2130109