经典的数据处理工具—awk
awk简介
awk的命名是由其三位创始人的姓名首字母拼合而来,是一个非常厉害的数据处理工具。相较于同为文本三剑客之一的sed而言,sed常作用于一整个行的处理,awk则比较倾向于一行当中分成数个字段来处理。因此,awk相当的适合处理小型的数据。 awk [options] ‘ pattern {action statements;…} ‘ file…
awk的处理流程及内置变量处理流程
我们长用到的内置变量就是如上这些,但是除了内置变量的应用,还有awk的逻辑运算符,也在awk的应用中起到很重要的作用。
值得注意的是那个“==“的符号,因为:
awk控制语句if-else if(condition){statement;…} [else statement] if(condition1){statement1} else if(condition2){statement2} else{statement3} 例:当第三列uid大于1000打印“common user”,否则打印“root or Sysuser” awk -F: ‘{if($3>=1000) printf "Common user: %sn",$1; else printf "root or Sysuser: %sn",$1}‘ /etc/passwd while循环 语法: while(condition){statement;…} 条件为“真”,进入循环;条件为“假”,退出循环 awk ‘/^[[:space:]]*linux16/ {i=1;while(i<=NF) {print $i,length($i); i++}}‘ /etc/grub2.cfg for循环 语法: for(expr1;expr2;expr3) {statement;…} 例:将上例用for循环来做 awk ‘/^[[:space:]]*linux16/{for(i=1;i<=NF;i++) {print $i,length($i)}}‘ /etc/grub2.cfg awk函数gsub函数 echo "111hah111ih111j" |awk ‘gsub(/111/,222){print $0}‘ sub函数 使用sub发现并替换模式的第一次出现位置。对比gsub,sub只替换第一个匹配到的位置 例:任意改变上例的字符串 echo "111hah111ih111j" |awk ‘sub(/111/,222){print $0}‘ substr函数 substr是一个很有用的函数。它按照起始位置及长度返回字符串的一部分。 例子如下:取出下列字符的前五个字符 echo "lishuyang" |awk ‘{print substr($1,1,5)}‘ length函数 返回所需字符串长度,例如检验某字符串返回名字及其长度,即字符串构成的字符个数。 例: 统计字符串“lishuyang”的长度 echo "lishuyang" |awk ‘{print length($0)}‘ split函数 使用split返回字符串数组元素个数。工作方式如下:如果有一字符串,包含一指定分隔 符-,例如AD2-KP9-JU2-LP,将之划分成一个数组。使用split,指定分隔符及数组名。此 例中,命令格式为(“AD2-KP9-JU2-LP″,parts_array,”-“),split然后返回数组下标数,这 里结果为4。 awk ‘BEGIN{print split("AD2-KP9-JU2-LP","-")}‘ awk使用注意事项
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |