awk应用实例(经典awk例子)

发布时间:2019-07-29编辑:脚本学堂
介绍三个awk的例子,包括类似数据库的left join查询,去除重复,awk局部变量使用,有需要的朋友,可以参考下。
三,awk的局部变量
这个例子来说明一下,awk怪异的局部变量
 

复制代码 代码示例:
[root@ecms mytest]# cat sum 
 1       2 
 2       3 
 a       b 
 3       2 
 4       1 
 3       r 
 

把都是数字的行,最大的那个数字加起来,第一行是2,第二行是3,每四行是3,第五行是4,总和是12
 

复制代码 代码示例:
function max(one,two){ 
 if(one > two){ 
 sum = sum + one; 
 }else{ 
 sum  = sum + two; 
 } 
 } 
 
{if($1~"[0-9]" && $2~"[0-9]") max($1,$2);} 
 END{print "sum="sum} 

在max方法里面,变量sum是会影响外面的,这里的sum是全局的。
 

复制代码 代码示例:

[root@ecms mytest]# awk -f add.sh sum
sum=12

function max(one,two,sum){    //方法中的sum局部变量 
if(one > two){ 
sum = sum + one; 
}else{ 
sum  = sum + two; 


 
{if($1~"[0-9]" && $2~"[0-9]") max($1,$2,sum);} 
 
END{print "sum="sum}         //所以为空 
[root@ecms mytest]# awk -f add.sh sum
sum=

function max(one,two,sum){ 
 if(one > two){ 
 sum = sum + one; 
 }else{ 
 sum  = sum + two;  
 } 
  return  sum  //加上return就可以了 
 } 
 
{if($1~"[0-9]" && $2~"[0-9]") sum = max($1,$2,sum);} 
 
END{print "sum="sum}