Awk 编程学习笔记之一 
 
要求:按账号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 ","?"$kk"?",$1,$2)} #如果没有账号补上空格 
else{ 
printf("%-19.19s%-8.8s%8.2f ",$1,$2,$3)} 
}? tmp.txt > $2 
awk ?$NF~/[0-9]/{ 
sum=sum+$NF 
} 
END{ 
system("rm tmp.txt") 
printf("The sum is%16.2f! ", sum) #输出工资总数 
}? $2 
----------------------------------------
                  	
				

HR 于 2006-07-30 22:26:26发表:
门外汉来支持一下。