比较运算
比较运算操作符包括< <= == != >= > ~ !~,可以支持数值比较、字符串比较、正则表达式匹配等方式,如果是用于字符串比较的运算符,则数值被转换为字符串值,字符串必须加引号。
模式中的比较运算:
awk '$1>10{print $1}' filename
awk '$1=="abc"{print $1}' filename
awk '$1 ~ /Adam/{print $1}' filename
操作中的比较运算:
awk -F '{if($2>=560002) print $0}' filename
awk -F '{if($1!="2014-08-03") print $0}' filename
awk -F '{if($1 ~ /2014-08-03/) print $0}' filename
算术运算
算术运算操作符包括+ - * / % ^,可以在模式中执行计算,awk都将按浮点方式执行算术运算。
模式中的算术运算:
awk -F '$2+0>=560002{print $0}' filename
操作中的算术运算:
awk -F '{tot+=$2}'END'{print tot}' filename
逻辑运算
逻辑操作符包括&& || !,复合模式是用逻辑运算符将模式组合起来形成的表达式,表达式的计算是从左到右的。
模式中的逻辑运算:
awk -F '$2==560002 || $2==560001{print $0}' filename
awk -F '$1=="2014-08-03" && $2==560003{print $0}' filename
awk -F '!($1=="2014-08-03"){print $0}' filename
操作中的逻辑运算:
awk -F '{if($2==560002 || $2==560001) print $0}' filename
awk -F '{if($1=="2014-08-03" && $2==560003) print $0}' filename
awk -F '{if(!($1=="2014-08-03")) print $0}' filename
循环语句
awk有3种类型的循环:while循环、for循环和特殊for循环。
普通for循环
echo "abc defg"|awk '{for(i=1;i<=NF;++i){printf "%s ",$i}}'
while循环
echo "abc defg"|awk '{i=1;do{printf "%s ",$i;++i}while(i<=NF)}'
echo "abc defg"|awk '{i=1;while(i<=NF){printf "%s ",$i;++i}}'
特殊for循环
echo "abc defg"|awk '{split($0,fd);for(i in fd){print fd[i]}}'
break和continue语句
可以在某个特定条件为真时,使用break语句跳出循环。continue语句的作用则是在特定条件为真时,让循环跳过continue之后的语句,将循环转回循环顶部,开始下一轮循环。
字符串处理
计算字符串长度:
echo "abc defg"|awk '{print length}'
echo "abc defg"|awk '{print length($2)}'
截取字符串子串:
echo "abc defg"|awk '{print substr($0,1)}'
echo "abc defg"|awk '{print substr($1,1,3)}'

被折叠的 条评论
为什么被折叠?



