Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5332361
  • 博文数量: 1144
  • 博客积分: 11974
  • 博客等级: 上将
  • 技术积分: 12312
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-13 20:06
文章存档

2017年(2)

2016年(14)

2015年(10)

2014年(28)

2013年(23)

2012年(29)

2011年(53)

2010年(86)

2009年(83)

2008年(43)

2007年(153)

2006年(575)

2005年(45)

分类: LINUX

2006-09-29 08:05:45

文件处理

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"' $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
阅读(2378) | 评论(0) | 转发(0) |
0

上一篇:awk中调用系统变量

下一篇:Shell awk 请教

给主人留下些什么吧!~~