FS 输入的时候字段分隔符,默认为一个空格、多个空格、\t
OFS 输出的时候字段分隔符,默认为一个空格
NF 当前输入记录的字段个数
NR 当前输入记录的行数
RS 记录分隔符,默认为一个换行符
ORS 输出分隔符,默认为一个换行符
##############################################################
if条件语句
if(...)print...;else print...
if(...)print...;else if(...)print...;eles print...
awk '{grade=($2>=65)?"PASS":"Fail";print $1,grade}' file
##############################################################
for循环
for(...;...;...)print...
设置变量初始值,描述循环开始时要测试的条件,每次循环的地步递增计数器
##############################################################
数组
split()创建数组,内置函数split能够将任何字符串分解到数组的元素中,这个函数对于从字段中提取“子字段”很有用
n = split(string,array,separator)
string是要被分割的字符串,array是数组的名字,separator指定分隔符来分解,如果没有指定就默认为FS分隔符
系统变量的数组
ARGV 命令行参数数组,第一个元素下标0,最后一个下标为ARGC-1
ENVIRON 一个环境变量数组
###############################################################
函数
gsub(r,s,t) 字符串t中用字符串s替换和正则表达式匹配的所有字符串,返回替换的个数,如果没有给出t,默认$0
index(s,t) 返回字符串t在字符串s中的位置如果没有指定s,则返回0
length(s) 返回字符串s的长度,当没给出s时,返回$0的长度
match(s,r) 正则表达式r在s中出现,返回出现的起始位置,如果在s中没有发现r,则返回0
split(s,a,sep) 使用字段分隔符sep将字符串s分解到数组a的元素中,返回元素的个数,如果没有给出sep,则使用FS
springf("fmt",expr) 对expr使用printf格式说明
sub(r,s,t) 在字符串t中用s替换正则表达式r的首次匹配,如果成功则返回1,否则返回0,如果没有给出t,默认为$0
substr(s,p,n) 返回字符串s中从位置p开始最大长度为n的子串,如果没有给出n,返回从p开始剩余的字符串
tolower(s) 将字符串s中的所有大写字符转换为小写,并返回新串
toupper(s) 将字符串s中的所有大写字符转换为大写,并返回新串