文本操作笔记之AWK
AWK笔记
1 AWK基础
• AWK 和 sed 的区别
• AWK 更像是脚本语言
• AWK 用于“比较规范”的文本处理,用于统计数量并输出指定字段
• 使用 sed 将不规范的文本,处理为“比较规范”的文本
• AWK 脚本的流程控制
• 输入数据前例程 BEGIN{ }
• 主输入循环{ }
• 所有文件读取完成例程 END{ }
• 记录和字段
• 每行称作 AWK 的记录
• 使用空格、制表符分隔开的单词称作字段
• 可以自己指定分隔的字段
• 字段的引用
• awk 中使用 $1 $2 … $n 表示每一个字段
• awk ‘{ print $1, $2, $3}’ filename
• awk 可以使用 -F 选项改变字段分隔符
• awk -F ‘,’ ‘{ print $1, $2, $3}’ filename
• 分隔符可以使用正则表达式
2 AWK的表达式
• 赋值操作符
• = 是常用的赋值操作符
• var1 = “name”
• var2 = “hello" “world”
• var3 = $1
• 其他赋值操作符
• ++ - - += -= *= /= %= ^=
• 算数操作符
• + - * / % ^
• 系统变量
• FS 和 OFS 字段分隔符,OFS 表示输出的字段分隔符
• RS 记录分隔符
• NR 和 FNR 行数
• NF 字段数量,后一个字段内容可以用 $NF 取出
• 关系操作符
• < > <= >= == != ~ !~
• 布尔操作符
• && || !
3 AWK的条件与循环
• 条件语句
• 条件语句使用 if 开头,根据表达式的结果来判断执行哪条语句
if (表达式)
awk语句1
[ else
awk语句2
]
• 如果有多个语句需要执行可以使用 { } 将多个语句括起来
• 循环
• while 循环
while( 表达式 )
awk语句1
• do 循环
do{
awk 语句1
}while( 表达式 )
• for循环
for( 初始值 ; 循环判断条件 ; 累加 )
awk语句1
• 影响控制的其他语句
• break
• continue
4 AWK数组
• 数组的定义
• 数组 :一组有某种关联的数据(变量),通过下标依次访问
• 数组名[ 下标 ] = 值
• 下标可以使用数字也可以使用字符串
• 数组的遍历
• for( 变量 in 数组名)
• 使用 数组名 [ 变量] 的方式依次对每个数组的元素进行操作
• 删除数组
• delete 数组[ 下标 ]
• 命令行参数数组
• ARGC
• ARGV
5 AWK函数
• 算数函数
• sin( ) cos( )
• int( )
• rand( ) srand( )
• 字符串函数
• gsub( r, s, t )
• index( s, t )
• length( s )
• match( s, r )
• split( s, a, sep )
• sub( r, s, t )
• substr( s, p, n )
• 自定义函数
function 函数名( 参数 ) {
awk语句
return awk变量
}