awk常用知识点

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中的所有大写字符转换为大写,并返回新串


你可能感兴趣的:(awk)