$0 完整的输入记录
ARGC 命令行参数的数目
ARGIND 命令行中当前文件的位置( 从0 开始算)
ARGV 包含命令行参数的数组
CONVFMT 数字转换格式( 默认值为%.6g)
ENVIRON 环境变量关联数组
ERRNO 最后一个系统错误的描述
FIELDWIDTHS 字段宽度列表( 用空格键分隔)
FILENAME 当前文件名
FNR 同NR ,但相对于当前文件
FS 字段分隔符( 默认是任何空格)
IGNORECASE 如果为真(即非0 值),则进行忽略大小写的匹配
NF 当前记录中的字段数(列)
NR 当前行数
OFMT 数字的输出格式( 默认值是%.6g)
OFS 输出字段分隔符( 默认值是一个空格)
ORS 输出记录分隔符( 默认值是一个换行符)
RLENGTH 由match 函数所匹配的字符串的长度
RS 记录分隔符( 默认是一个换行符)
RSTART 由match 函数所匹配的字符串的第一个位置
SUBSEP 数组下标分隔符( 默认值是/034) 。
BEGIN 先处理(可不加文件参数)
END 结束时处理
[[:digit:][:lower:]] 数字和小写字母(占一个字符)
-F"[ ]+|[%]+" 已多个空格或多个%为分隔符
[a-z]+ 多个小写字母
[a-Z] 代表所有大小写字母(aAbB...zZ)
[a-z] 代表所有大小写字母(ab...z)
打印匹配到得行
awk '/Tom/' 文件
如果第三个字段值小于4000 才打印
awk '$3 <4000' 文件
匹配Tom 开头的行打印第一个字段
awk '/^Tom/{print $1}'
显示所有第一个字段不是以ly 结尾的行
awk '$1 !~ /ly$/' 文件
条件判断(如果$1 大于$2,max 值为为$1,否则为$2)
awk '{max=($1 > $2) ? $1 : $2; print max}' 文件
awk '{print ($1>$2)?"第一排"$1:"第二排"$2}' e.txt
(括号代表if 语句判断"?"代表then ":"代表else)
算术运算(第三个字段和第四个字段乘积大于500 则显示)
awk '$3 * $4 > 500' 文件
打印tom 到suz 之间的行
awk '/tom/,/suz/' 文件
去掉前三行
awk '{$1="";$2="";$3="";print}' a.sh
将date 值赋给d,并将d 设置为数组mon,打印mon 数组中第2 个元素
awk 'BEGIN{ "date" | getline d; split(d,mon) ; print mon[2]}' 文件
以空格、:、制表符Tab 为分隔符
awk -F'[ :t]' '{print $1,$2}'
取关键字下第几行
awk '/关键字/{a=NR+2}a==NR {print}'
awk 中引用变量
a=22aa &&echo 88:99:44|awk -F":" '{print $1,"'"$a"'",$2,$3}'
指定类型(%d 数字,%s 字符)
/sbin/ifconfig |awk '{printf("line %d,%sn",NR,$0)}'
awk -v RS=# 'NF{for(i=1;i<=NF;i++)if($i) printf $i;print ""}' 文件
awk 加if 判断
awk '{if ( $6 > 50) print $1 " Too high" ;
else print "Range is OK"}' file
awk '{if ( $6 > 50) { count++;print $3 }
else { x+5; print $2 } }' file
awk 加循环
awk '{i = 1; while ( i <= NF ) { print NF, $i ; i++ } }' file










