标签: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