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 的值
原文地址:http://blog.51cto.com/12384628/2130109
时间: 2024-10-28 16:03:49