awk学习笔记-2

来源:互联网 发布:我的世界联机java.net 编辑:程序博客网 时间:2024/06/01 07:59

比较运算
        比较运算操作符包括< <= == != >= > ~ !~,可以支持数值比较、字符串比较、正则表达式匹配等方式,如果是用于字符串比较的运算符,则数值被转换为字符串值,字符串必须加引号。
       模式中的比较运算:

awk '$1>10{print $1}' filenameawk '$1=="abc"{print $1}' filenameawk '$1 ~ /Adam/{print $1}' filename

      操作中的比较运算:

awk -F '{if($2>=560002) print $0}' filenameawk -F '{if($1!="2014-08-03") print $0}' filenameawk -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}' filenameawk -F '$1=="2014-08-03" && $2==560003{print $0}' filenameawk -F '!($1=="2014-08-03"){print $0}' filename

      操作中的逻辑运算:

awk -F '{if($2==560002 || $2==560001) print $0}' filenameawk -F '{if($1=="2014-08-03" && $2==560003) print $0}' filenameawk -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)}'

 


 

0 0