awk脚本 最简介

AWK名字来源于三位创造者Aho、Weinberger和Kernighan统称。
AWK擅长处理文本数据。

命令行方式

awk '{}' file

文件方式

<awkfile>.awk
#! /bin/awk -f
BEGIN{}
{}
END{}
$ awk <awkfile.awk> awk

AWK参数

-F 指定域分隔符,例如:-F "|",即以|作为域分隔符,默认分隔符为一个或多个空格或TAB,即"[[:space:]][[:space:]]*"。
-v 定义变量,从shell给awk传递变量,如-vDATE=$DATE,即将shell中$DATE变量值传递给awk变量DATE。
-f 指定脚本文件,例如-f progfile。

AWK内置变量

FS 域分隔符
NF 域个数
NR 行数
FNR 同上
FILENAME 处理的文件名,当输入为管道时,FILENAME为空。
RS 行分隔符
OFS 输出域分隔符
ORS 输出行分隔符
OFMT 数字输出格式
CONVFMT 数字内部转换格式
SUBSEP 多维数组索引分隔符
ARGC 输入参数个数
ARGV 输入参数数组
ENVIRON 环境变量数组
RSTART match()函数正则匹配到字符串开始位置
RLENGTH match()函数正则匹配到字符串的长度
$0 所有的输入参数
$1,$2,$3,$4 第几个输入参数


AWK内置函数

blength[([s])] 计算字符串长度(byte为单位)
length[([s])] 计算字符串长度(character为单位)
rand() 生成随机数
srand([expr]) 设置rand() seed
int(x) 字符串转换为整型
substr(s, m [, n]) 取子字符串
index(s, t) 在字符串s中定位t字符串首次出现的位置
match(s, ere) 在字符串s中匹配正则ere,match修改RSTART、RLENGTH变量。
split(s, a[, fs]) 将字符串分割到数组中
sub(ere, repl [, in]) 字符串替换
gsub 同上
sprintf(fmt, expr, ...) 拼字符串
system(cmd) 在shell中执行cmd (貌似直接用""括起来,就可以使用)
toupper(s) 字符串转换为大写
tolower(s) 字符串转换为小写

AWK流程控制

if(expression) statement [ else statement ]
while(expression) statement
for(expression;expression;expression) statement
for(var in array) statement
do statement while(expression)
break
continue
{[statement ...]}
expression # commonly var = expression
print [expression-list] [ > expression]
printf format [, expression-list] [ > expression]
return [expression]
next # skip remaining patterns on this input line.
delete array [expression] # delete an array element.
AWK中数组有两种用法普通数组和HASH数组,此处为HASH数组。
多维数组例子,可将多个字段作为分组列,AWK使用一维数组模拟多维数组,使用\034作为分隔符
exit [expression] # exit immediately; status is expression.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值