![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 22:58 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 文本合并计算 |
| 可打印版本 2,608 / 18 |
| 第1楼 xycoordinate | 发表于 2008-05-28 18:24 |
| 中级用户 发帖 228 积分 493 来自 安徽 | |
|
文本合并计算 text1.txt
text2.txt
如何将text1.txt和text2.txt相同项目合并加总 得到 机构 笔数 借贷 金额 15600_prt 15601 15 借 39773 合计 * * * ...... ...... 注: 15601 6 贷 -4341.00 15601 9 借 44114.00 6+9=15 44114-4341=39773 注意: 15601 15602 ... 15606 字段1数字可能不连续!!! ![]() ![]() ![]() 我把结果讲的不清楚! 是每月统计本机构代理其他机构的业务量 共16个机构 想得到:
中间没有15603和15614 [ Last edited by xycoordinate on 2008-5-29 at 02:12 PM ] |
|
| 第2楼 lxmxn | 发表于 2008-05-28 20:16 |
| 版主 发帖 4,938 积分 11,386 | |
|
意思没有表达清楚:合并之后,借贷字段是写“借”还是“贷”呢?根据什么来判断?
这样的问题用 awk 来解决最适合不过了。 |
|
| 第3楼 slore | 发表于 2008-05-28 21:01 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
正数是借……负是贷……
个人觉得有点像体力活=。= |
|
| 第4楼 lxmxn | 发表于 2008-05-28 21:22 |
| 版主 发帖 4,938 积分 11,386 | |
|
不知道这样如何?
# gawk --posix "$1~/^+$/{rec+=$NF;num+=$2;sum+=$NF;} END{printf(\"机构 笔数 借贷 金额\n\");for(t in rec){printf(\"%-10s%-10d%-10s%-10d\n\",t,num,rec>0?\"借\":\"贷\",rec);}}" text1.txt text2.txt |
|
| 第5楼 xycoordinate | 发表于 2008-05-28 21:31 |
| 中级用户 发帖 228 积分 493 来自 安徽 | |
是这个意思! 要用awk??? 不想倒到UNIX上去!!! ![]() lxmxn斑竹: 有2个问题 A.机构没有排序 B.没有合计 [ Last edited by xycoordinate on 2008-5-28 at 10:03 PM ] |
|
| 第6楼 slore | 发表于 2008-05-28 21:55 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
有windows版的呀
|
|
| 第7楼 HAT | 发表于 2008-05-28 22:35 |
| 版主 发帖 5,017 积分 9,023 | |
| 第8楼 lxmxn | 发表于 2008-05-28 23:17 |
| 版主 发帖 4,938 积分 11,386 | |
|
[ Last edited by lxmxn on 2008-5-28 at 11:19 PM ] |
|
| 第9楼 bat-zw | 发表于 2008-05-28 23:23 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
我日花了我两个小时写这个: 注:echo 第一个字符串后的空格实际都是tab(按下tab键),而论坛处理不了tab (只做空格处理),所以请楼主自己将复制后的代码中的空格改回tab! 1.txt: 附运行后的结果: [ Last edited by zw19750516 on 2008-5-28 at 11:47 PM ] |
|
| 第10楼 26933062 | 发表于 2008-05-29 01:39 |
| 银牌会员 发帖 879 积分 2,268 | |
|
也来一个,没计算后面的小数。
看楼上几位好像都没计算小数? : |
|
| 第11楼 lxmxn | 发表于 2008-05-29 02:03 |
| 版主 发帖 4,938 积分 11,386 | |
|
如果有Perl的环境可以试试这个:
# perl -anle ' [ Last edited by lxmxn on 2008-5-29 at 02:05 AM ] |
|
| 第12楼 26933062 | 发表于 2008-05-29 03:18 |
| 银牌会员 发帖 879 积分 2,268 | |
|
计算这个小数还真麻烦,到头来自己都不知道是怎么算的了。结果倒好像对了。
|
|
| 第13楼 xycoordinate | 发表于 2008-05-29 08:18 |
| 中级用户 发帖 228 积分 493 来自 安徽 | |
|
感谢大家的热心帮助!
我得好好学习学习!!! 消化 |
|
| 第14楼 xycoordinate | 发表于 2008-05-29 09:01 |
| 中级用户 发帖 228 积分 493 来自 安徽 | |
|
test.bat
难道只能在CMD下执行,不能写成BAT吗? E:\bdttdb>test.bat 机构 笔数 借贷 金额 gawk: cmd. line:1: $1~/^+$/{rec+=$NF;num+=$2;sum+=$NF;} END{for(t i n rec){printf("-10d-10.2f\n",t,num,rec>0?"借":"贷",rec);tnum+=num;tr ec+=rec} ;printf("合计: -10s"贷",trec)} gawk: cmd. line:1: ^ invalid char '? in expression |
|
| 第15楼 radem | 发表于 2008-05-29 11:34 |
| 高级用户 发帖 383 积分 691 | |
|
这里的氛围真好!
努力学习..... |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |