Awk 编程学习笔记之一

发表于:2007-07-01来源:作者:点击数: 标签:
Awk 编程实例分析(学习笔记之一) 文件处理 1.有文件gz.txt(工资) 4367422926350133100 张三 1250.00 4367422926351220178 李四 1300.00 4367422926351220546 王二 0 苏五丙 1340.00 4367422926351220178 孙六月 1390.00 …… …… 要求:按账号19位、姓名8


Awk 编程实例分析(学习笔记之一)
文件处理
1.有文件gz.txt(工资)
4367422926350133100 张三 1250.00
4367422926351220178 李四 1300.00
4367422926351220546 王二 0
苏五丙 1340.00
4367422926351220178 孙六月 1390.00
…… ……
要求:按账号19位、姓名8位、工资8位来排列,且如姓名不足8位在之后补足,工资不足8位则在工资之前补。同时要求去掉工资为0的名单,没有账号在前补19位空格,并输出工资总数加以核对,处理后应如下排列:
4367422926350133100张三 1250.00
4367422926351220178李四 1300.00
苏五丙 1340.00
4367422926351220178孙六月 1390.00
…… ……
awk程序:
#------------------------------------
#shgz1.sh
sblank=" "
awk @#$NF!="0"{print $0}@# $1 > tmp.txt #删除工资为0的人数
awk @#{
if($1!~/[0-9]/){
printf("%-19.19s%-8.8s%8.2f\n","@#"$kk"@#",$1,$2)} #如果没有账号补上空格
else{
printf("%-19.19s%-8.8s%8.2f\n",$1,$2,$3)}
}@# tmp.txt > $2
awk @#$NF~/[0-9]/{
sum=sum+$NF
}
END{
system("rm tmp.txt")
printf("The sum is%16.2f!\n", sum) #输出工资总数
}@# $2
----------------------------------------
本人刚刚开始学awk,也会把自己的一些心得与体会发上来其中尚有许多不成熟的地方,愿得各位指正!

原文转自:http://www.ltesting.net