免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2657 | 回复: 12
打印 上一主题 下一主题

求助关于一个代发工资的问题!!!!!!!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-12 09:08 |只看该作者 |倒序浏览
代发工资成功流水文件:

&T cgqd
branch=××××营业部                    
title=(批量处理)
ye=2002
0=08
1=08
b=代发养老金                     
corname=××××保险事业处        
corac=111101040009039
ac94=111101948700022
cnt=  2666
totamt=        134,329.10
cusno=000001
cusnam=孙淑乾
cusac=111101100161480
amt=             1,131.20
date=20020808
cusno1=000002
cusna1=孙淑秀
cusac1=111101100161498
amt1=             2,143.50
date1=20020808
&L
cusno=000003
cusnam=姜洪德
cusac=111101100161506
amt=             41.00
date=20020808
cusno1=000004
cusna1=宋振凯
cusac1=111101100161514
amt1=             45.00
date1=20020808
&L
&


转换成如下文件(逗号去掉):
孙淑乾,000001,1131.20
孙淑秀,000002,2143.50
姜洪德,000003,41.00
宋振凯,000004,45.00


如何实现?

论坛徽章:
0
2 [报告]
发表于 2004-04-12 09:12 |只看该作者

求助关于一个代发工资的问题!!!!!!!!!

本人编写了如下程序,但记录多时,要处理很长时间,哪位大哥有更好的办法,请指教!

while read x y
do
ycno=""
ycna=""
ycje=""
yczje=""
ycno1=`echo $x|cut -c 1-6`
ycna1=`echo $x|cut -c 1-7`
ycje1=`echo $x|cut -c 1-4`
ycno2=`echo $x|cut -c 1-7`
ycna2=`echo $x|cut -c 1-7`
ycje2=`echo $x|cut -c 1-5`
ycje3=`echo $x|cut -c 1-7`
if [ "$ycje3" = "totamt=" ]
then
yczje=$y
fi
if [ "$ycno1" = "cusno=" ]
then
ycno=`echo $x|cut -c 7-`
elif [ "$ycno2" = "cusno1=" ]
then
ycno=`echo $x|cut -c 8-`
#else
#continue
fi
if [ "$ycna1" = "cusnam=" ]
then
ycna=`echo $x|cut -c 8-`
elif [ "$ycna2" = "cusna1=" ]
then
ycna=`echo $x|cut -c 8-`
#else
#continue
fi
if [ "$ycje1" = "amt=" ]
then
ycje=$y
elif [ "$ycje2" = "amt1=" ]
then
ycje=$y
#else
#continue
fi
yclen=`echo $ycno|wc -c`
if [ $yclen -gt 1 ]
then
echo "$ycno;\c">>1
fi
yclen=`echo $ycna|wc -c`
if [ $yclen -gt 1 ]
then
echo "$ycna;\c">>1
fi
yclen=`echo $ycje|wc -c`
if [ $yclen -gt 1 ]
then
echo $ycje>>1
fi
yclen=`echo $yczje|wc -c`
if [ $yclen -gt 1 ]
then
echo $yczje>>1
fi
done<1.txt
sed 's/,//g' 1 >2
sed 's/,/ /g' rs1.txt >1
while read x y z
do
awk -F';' '{print $1}' 2|grep "$y" >/dev/null
if [ $? -gt 0 ];then
echo $x,$y,$z,0 >>rs2.txt
else
echo $x,$y,$z,1 >>rs2.txt
fi
done<1

论坛徽章:
0
3 [报告]
发表于 2004-04-12 09:43 |只看该作者

求助关于一个代发工资的问题!!!!!!!!!

  1. awk -F= '{if($1=="cusno"||$1=="cusno1")tmp=$2;if($1=="cusnam"||$1=="cusna1")printf("%s,%s",$2,tmp);if($1=="amt"||$1=="amt1"){gsub(/,|| /,"",$2);print ","$2}}' file
复制代码

文件格式固定话,应该可以,不过还没去掉逗号,我再想想 :em11:
gsub怎么用?不会
-----------------------------------------------------
找着了,改了

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-04-12 11:56 |只看该作者

求助关于一个代发工资的问题!!!!!!!!!

  1. admirer /tmp/aa # cat datafile | sed -n  '/\<cusno\|\<cusna\|\<amt/p' | sed 'N;N;s/\n/ /g;s/\<[^ ]\{1,\}=//g;s/\([0-9]\{1,\}\) \([^ ]\{1,\}\) /\2 \1/;s/,//;s/ /,/g'
  2. 孙淑乾,000001,1131.20
  3. 孙淑秀,000002,2143.50
  4. 姜洪德,000003,41.00
  5. 宋振凯,000004,45.00
复制代码

论坛徽章:
0
5 [报告]
发表于 2004-04-12 13:40 |只看该作者

求助关于一个代发工资的问题!!!!!!!!!

  1. grep -E "cusno|cusna|^amt" file|awk -F"=" '{print $2}'|xargs -n3|awk '{print $2,$1,$3}'|sed -e 's/,//g' -e 's/ /,/g'
复制代码


孙淑乾,000001,1131.20
孙淑秀,000002,2143.50
姜洪德,000003,41.00
宋振凯,000004,45.00

论坛徽章:
0
6 [报告]
发表于 2004-04-12 14:04 |只看该作者

求助关于一个代发工资的问题!!!!!!!!!

大红机器兄,谢谢!改为
   gsub(/, /,"",$2)
就好了

论坛徽章:
0
7 [报告]
发表于 2004-04-12 14:04 |只看该作者

求助关于一个代发工资的问题!!!!!!!!!

  1. awk -F= '{gsub(/ /,"")}/^cusna/||/^cusno/||/^amt/{print $2}' file|xargs -n 3|awk '{print $2,$1,$3}'
复制代码
孙淑乾 000001 1,131.20
孙淑秀 000002 2,143.50
姜洪德 000003 41.00
宋振凯 000004 45.00

论坛徽章:
0
8 [报告]
发表于 2004-04-12 14:12 |只看该作者

求助关于一个代发工资的问题!!!!!!!!!

全部格式输出如何实现?如:

printf("%-6s,%-16s,%10.2f\n",tmp1,tmp2,$2)

金额为浮点数

论坛徽章:
0
9 [报告]
发表于 2004-04-16 21:41 |只看该作者

求助关于一个代发工资的问题!!!!!!!!!

老兄,用po加上格式文件就可以了,比用shell快多了

论坛徽章:
0
10 [报告]
发表于 2004-04-16 21:51 |只看该作者

求助关于一个代发工资的问题!!!!!!!!!

[quote]原帖由 "yuzengbao"]老兄,用po加上格式文件就可以了,比用shell快多了[/quote 发表:

什么是po呀
ps:不用shell用什么,用C? 那去C版,用perl,那去perl版...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP