awk学习笔记-2

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

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)}'

 


 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值