1.awk 'parttern {action}' filename
从文件中逐行读取并匹配parttern,若匹配成功执行action否则读取下一行.
parttern和action都可选,若省略parttern则对每行都执行action.BEGIN和END不能省略action.
parttern {action}语句,及action内的语句通常用换行符分隔,若干语句在同一行时用分号分隔.
左大括号{必须与parttern在同一行,右大括号}位置不限.其中的空行被忽略.
空格与制表符可以成对出现在运算符与操作数周围以提高可读性.
注释任一行.
2.当前输入行的第一个字段为$1,第二个字段为$2...当前行为$0.字段默认分隔符为空格或制表符.
3.在print语句中默认以逗号分隔表达式,{print $1,$2}
4.内置变量不需通过$引用
NF:Number of Field,每行的字段数.$NF可以表示最后一个字段值.
NR:Number of Record,到目前为止读取到的记录(行)数.
FNR:当前输入文件的记录个数.
FS:Field Separator,(输入行)字段分隔符.默认为空格.
OFS:Output Field Separator,输出行字段分隔符.默认为换行符(\n).
RS:Record Separator:输入行分隔符.默认为换行符.
ORS:Output Record Separator:输出行分隔符.默认为空格.
ARGC:命令行参数的个数.
ARGV:命令行参数数组.
FILLENAME:当前输入文件名.
OFMT:数值的输出格式,默认为%.6g
RLENGTH:被函数匹配的字符串的长度.
RSTART:被函数匹配的字符串的开始.
SUBSEP:下标分隔符.默认为\034.
5.parttern汇总
BEGIN {action}:在输入行被读取之前执行action一次.
END {action}:在输入行读取完成之后执行action一次.
expression {action}:若expression为真则输入行执行action,否则跳过.
/regexpr/ {action}:若输入行匹配正则表达式则执行action,否则跳过.
compexpr {action}:若复合表达式(由&&、||、!、())为真则输入行执行action,否则跳过.
parttern1,parttern2 {action}:对匹配parttern1开始到匹配parttern2结束的其间所有行(含这两行)执行action.若parttern2未匹配则从parttern1到末行执行action.
BEGIN和END不与其他模式组合,一个范围模式不能是其他模式的一部分.
6.BEGIN常用来更改FS,或打印标题.END用来输出计算结果.
7.比较运算符
< 小于
<= 小于等于
== 等于
!= 不等于
大于
= 大于等于
~ 匹配
!~ 不匹配
8.字符串匹配模式:测试一个字符串是否包含一段可以被正则表达式匹配的子字符串.
/regexpr/:当前输入行包含一段能够被rexexpr匹配的子字符串时该模式被匹配.
expression ~ /regexpr/:若expression的字符串值包含一段能被rexexpr匹配的子字符串时该模式被匹配.
expression !~ /regexpr/:若expression的字符串值不包含一段能被rexexpr匹配的子字符串时该模式被匹配.
9.action汇总
expression:常量,变量,赋值,函数调用等
print expression-list
printf(format,expression-list)
if (expression) statements
if (expression) statements else statements
for (expression1;expression2;expression3) statements
for (expression in array) statements
while (expression) statements
do statements while (expression)
break
continue
10.内建算术函数--P36未完待续