1)内建变量
FS:input field seperator(输入字段分隔符,默认为空白字符)
#awk -v FS=':' '{print $1}'/etc/passwd
#awk -F: ‘{print $1}’/etc/passwd(这个命令和上面的命令效果是一样的)
注:使用FS可以一次使用多个字符做为分隔符;例:awk -v FS="[,:]" '{print $3,$1,$2}' d.txt
OFS:output field seperator(输出字段分隔符,默认为空白字符)
#awk -v FS=':' -v OFS=':' '{print $1,$3,$7}'/etc/passwd
RS:input record seperator,输入时的换行符;
ORS:output record seperator,输出时的换行符;
NF:number of field,每一行字段数量
{print NF},{print $NF}()
一行中的最后一个字段用$NF表示
NR:number of record,处理过的行数
#awk ‘{print NR}’/etc/fstab
FNR:每一个文件处理过的行数
#awk ‘{print FNR}’/etc/fstab/etc/issue
FILENAME:当前正在处理的文件的文件名
#awk ‘{print FILENAME}’/etc/fstab
ARGC:命令行参数的个数
#awk 'BEGIN{print ARGC}'/etc/fstab
ARGV:数组,保存的是命令行所给定的各参数
#awk 'BEGIN{print ARGV[0]}'/etc/fstab
2)自定义变量
-v var=value
变量名区分字符大小写;
#awk -v test='Hello gawk' 'BEGIN{print test}'
在program中直接定义
#awk 'BEGIN{test="Hello gawk";print test}'
算术运算操作符:
x+y,x-y,x*y,x/y,x^y(次方),x%y
-x
+x:转换为数值
字符串操作符:默认为没有符号的操作符:表示字符串连接
赋值操作符:
=,+=,-=,*=,/=,%=,^=
比较操作符:
>,>=,<,<=,!=,==
模式匹配符:
~:是否匹配
!~:是否不匹配
逻辑操作符:
&&:与
||:或
!:非
函数调用:
function_name(argu1,argu2,...)
条件表达式:
selector?if-true-expression:if-false-expression
#awk-F: '{$3>=1000?usertype=捌胀ㄓ没А?usertype=癝ysadminUser”; printf,,,,,,,,,null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null