您的位置:首页 > 职场人生

awk常见测试笔试面试

2013-01-06 13:45 267 查看
创建测试文件如下:

#创建测试文件
for i in `ls ../`;do echo  $i,2,3,4,5 >>input;done
input内容:

a+b.sh,2,3,4,5
awk,2,3,4,5
case.sh,2,3,4,5
for.sh,2,3,4,5
grep.all,2,3,4,5
if.sh,2,3,4,5
param.sh,2,3,4,5
sed,2,3,4,5
test,2,3,4,5
while.sh,2,3,4,5
a+b.sh,2,3,4,5
awk,2,3,4,5
case.sh,2,3,4,5
for.sh,2,3,4,5
grep.all,2,3,4,5
if.sh,2,3,4,5
param.sh,2,3,4,5
sed,2,3,4,5
test,2,3,4,5
while.sh,2,3,4,5
测试如下:

#统计空白行
awk '/^$/{print x+=1}' input

 #查找与替换
awk -F',' '{gsub(/while.sh/,"zhang san",$0)}{print $0}' input >input

 #计算平均数
awk -F',' '{total=$2+$3+$4+$5;avg=total/4}{print $1,avg}' input

 #有重复行情况下的平均数
awk -F',' '{total=$2+$3+$4+$5;avg=total/4;totalall[$1]+=avg;count[$1]++}END{for (i in totalall){print i,totalall[i]/count[i]}}' input

 #匹配正则
awk -F':' '$0!~/root/{print $0}' /etc/passwd

 #IF的用法,输出$为root
awk -F':' '{if($1=="root"){print $0}}' /etc/passwd


注意:awk是按照行循环并可以对每个列进行处理,功能强大。BEGIN里是循环前的处理,END里是循环后的处理。可以定义数组与变量,for、if等的用法与shell里for格式还是不一样的。

其他:

SED常见练习题
http://blog.csdn.net/kakane/article/details/7367133
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: