标签:awk 获取 匹配 部分 for hone 三元 tag 定义
awk [options] 'Pattern{action}' file ...
| 变量名 | 含义 |
|---|---|
| $0 | 整行 |
| $n | 列数 |
| $NF | 当前行的最后一列 |
| NF | 当前行的列数 |
| 参数 | 含义 |
|---|---|
| 打印 | |
| printf | 格式化打印 |
| exit | 退出awk |
| if | 条件语句 |
| if...else | 条件语句 |
| if...else if | 条件语句 |
| for | 循环语句 |
| while | 循环语句 |
| do...while | 循环语句 |
整行输出
{print $0} 等于 {print}
{print $0,$1} ","的作用相当于输出$0后,添加一个输出分割符
空模式
关系运算模式
BEGIN/END模式
正则模式
行范围模式
正则模式
使用{x,y}这种次数匹配的正则表达式时需要配合--posix选项或者--re-interval选项
awk '/正则表达式/{Action}' file //正则表达式需要放在"/ /"中
awk '/正则表达式1/[,/正则表达式2/]{Action}' file
awk 'BEGIN{print "aaa","bbb"}' test.txt 在处理test.txt之前先打印"aaa""bbb"
awk '{print $1}END{print "aaa"}' test.txt 在处理test.txt之后打印"aaa"
awk 'BEGIN{print "aaa"}{print $1,$2}' test.txt
| 参数 | 含义 | 示例 | 注释 |
|---|---|---|---|
| -F | 指定分隔符 | -F: | 以":"作为分割符 |
| -v | 设置变量 | -v FS=‘#‘ | 设置"#"为默认的输入分割符 |
| 变量 | 作用 | 注解 |
|---|---|---|
| FS | 输入分割符,默认为空格 | field separator |
| OFS | 输出分割符,默认为空格 | output field separator |
| RS | 输入记录分割符(输入换行符) | 指定输入时的换行符 |
| ORS | 输出记录分割符(输出换行符) | 输出时用指定符号代替换行符 |
| NF | 当前行的字段数量 | number of field |
| NR | 行号 | 当前处理的文本的行号 |
| FNR | 各文件分别计数的行号 | 处理多个文本是标注出不同文本的行号 |
| FILENAME | 当前文件名 | 打印当前文件名 |
| ARGV | 将命令行的各个参数保存成数组 | ‘program{action}‘不算参数 |
| ARGC | 命令行参数的个数 | ARGV数组的长度 |
//各种方式定义自定义变量
awk -v myvar="mrhonest" '{print myvar}'
awk 'BEGIN{myvar="mrhonest";print myvar}'
//一次性定义多个变量
awk 'BEGIN{myvar1="mr";myvar2="honest";print myvar1,myvar2}'
//引用shell中的变量
abc="mrhonest"
awk -v myvar=$abc 'BEGIN{print myvar}'
awk的数组下标默认从1开始
其它函数
| 函数| 作用|
| ----| ----|
| asort()| 根据数组元素值排序,返回值是数组的长度|
| asorti()| 根据数组元素下标排序|
条件 ? 结果1 : 结果2
表达式1 ? 表达式2 : 表达式3
awk 'i=!i' file 打印奇数行
awk '!(i=!i)' file 打印偶数行
from(致谢):http://www.zsythink.net/archives/tag/awk
标签:awk 获取 匹配 部分 for hone 三元 tag 定义
原文地址:https://www.cnblogs.com/mrhonest/p/11758105.html