|  | 
 
| xycoordinate 中级用户
 
    
 
 
 积分 493
 发帖 228
 注册 2007-2-16
 来自 安徽
 状态 离线
 | 
| 『楼 主』:
 文本合并计算
 
使用 LLM 解释/回答一下 
 
 
text1.txt 15600_20080525_01.p106_prt
 15601	6	贷	-4341.00
 15602	2	借	20245.00
 15604	8	贷	-30310.00
 15605	1	贷	-3000.00
 15606	1	借	20.00
 15607	3	贷	-2700.00
 15608	1	贷	-20000.00
 15609	9	借	57650.24
 15610	4	借	68859.00
 15611	1	贷	-780.00
 15612	4	借	15540.00
 15613	2	贷	-3895.00
 15615	7	贷	-25560.00
 15617	1	借	500.00
 合计	50	借	72228.24
 
 15601_20080525_prt
 15600	4	贷	-91000.00
 15602	4	贷	-65150.00
 15604	5	借	4970.00
 15605	2	借	7340.00
 15606	2	借	1000.00
 15607	2	借	900.00
 15608	1	借	690.00
 15609	1	借	970.00
 15611	4	借	6800.00
 15612	2	借	73500.00
 15613	1	借	500.00
 15615	3	借	2190.00
 15616	1	贷	-105.00
 合计	32	贷	-57395.00
 
 
text2.txt
 15600_20080526_01.p106_prt
 15601	9	借	44114.00
 15604	25	贷	-295670.00
 15605	2	借	303000.00
 15606	2	贷	-10000.00
 15607	1	借	45000.00
 15608	2	借	10320.00
 15609	2	借	526.00
 15610	4	贷	-44560.00
 15611	1	贷	-2300.00
 15612	5	贷	-3250.00
 15613	1	贷	-3003.00
 15615	4	借	31800.00
 15616	6	借	40990.00
 合计	64	借	116967.00
 
 15601_20080526_01.1a1_prt
 15600	3	借	22900.00
 15602	2	贷	-8000.00
 15604	19	借	33560.00
 15605	5	借	9053.00
 15606	5	借	30247.03
 15607	8	借	62750.00
 15608	1	借	450.00
 15609	3	贷	-390.00
 15610	5	借	15600.00
 15611	3	借	6400.00
 15612	1	借	840.00
 15613	2	借	28400.00
 15615	3	贷	-48200.00
 合计	60	借	153610.03
 
 
如何将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数字可能不连续!!!
 
<img src="images/smilies/face-sad.png" align="absmiddle" border="0"><img src="images/smilies/face-sad.png" align="absmiddle" border="0"><img src="images/smilies/face-sad.png" align="absmiddle" border="0">
我把结果讲的不清楚! 是每月统计本机构代理其他机构的业务量
 共16个机构
 想得到:
 
 1. 15600_200805
 15601 * * *
 15602 * * *
 15604 * * *
 15605 * * *
 ......
 15617 * * *
 
 2. 15601_200805
 15600 * * *
 15602 * * *
 15604 * * *
 15605 * * *
 ......
 15617 * * *
 
 3. 15602_200805
 ......
 ......
 
 
 中间没有15603和15614
 
 Last edited by xycoordinate on 2008-5-29 at 02:12 PM ]
 
 
 
 |  | 
|  2008-5-28 18:24 |  | 
|  | 
 
| lxmxn 版主
 
         
 
 
 积分 11386
 发帖 4938
 注册 2006-7-23
 状态 离线
 | 
| 『第 2 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
意思没有表达清楚:合并之后,借贷字段是写“借”还是“贷”呢?根据什么来判断?
 这样的问题用 awk 来解决最适合不过了。
 
 
 
 
 |  | 
|  2008-5-28 20:16 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
正数是借……负是贷……
 个人觉得有点像体力活=。=
 
 
 
 
 
 |  
                  |  S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
 |  | 
|  2008-5-28 21:01 |  | 
|  | 
 
| lxmxn 版主
 
         
 
 
 积分 11386
 发帖 4938
 注册 2006-7-23
 状态 离线
 | 
|   『第 4 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
不知道这样如何? # 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机构      笔数      借贷      金额
 15613     6         借        22002
 15604     57        贷        -287450
 15605     10        借        316393
 15615     17        贷        -39770
 15606     10        借        21267
 15616     7         借        40885
 15607     14        借        105950
 15617     1         借        500
 15608     5         贷        -8540
 15609     15        借        58756
 15600     7         贷        -68100
 15610     13        借        39899
 15601     15        借        39773
 15611     9         借        10120
 15602     8         贷        -52905
 15612     12        借        86630
 
 
 
 
 
 |  | 
|  2008-5-28 21:22 |  | 
|  | 
 
| xycoordinate 中级用户
 
    
 
 
 积分 493
 发帖 228
 注册 2007-2-16
 来自 安徽
 状态 离线
 | 
| 『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
正数是借……负是贷……
 
 
是这个意思!
 
要用awk??? 
不想倒到UNIX上去!!!
 
<img src="images/smilies/face-sad.png" align="absmiddle" border="0">
 
lxmxn斑竹:
 
有2个问题 
A.机构没有排序 
B.没有合计
 
 Last edited by xycoordinate on 2008-5-28 at 10:03 PM ] 
 
 
 
 |  | 
|  2008-5-28 21:31 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 6 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
有windows版的呀 
 
 
 
 
 |  
                  |  S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
 |  | 
|  2008-5-28 21:55 |  | 
|  | 
 
| HAT 版主
 
         
 
 
 
 积分 9023
 发帖 5017
 注册 2007-5-31
 状态 离线
 |  | 
|  2008-5-28 22:35 |  | 
|  | 
 
| lxmxn 版主
 
         
 
 
 积分 11386
 发帖 4938
 注册 2006-7-23
 状态 离线
 | 
| 『第 8 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
echo.机构      笔数      借贷      金额&&gawk --posix "$1~/^+$/{rec+=$NF;num+=$2;sum+=$NF;} END{for(t in rec){printf(\"%-10s%-10d%-10.2s%-10.2f\n\",t,num,rec>0?\"借\":\"贷\",rec);tnum+=num;trec+=rec} ;printf(\"合计:    %-10d%-10s%-10.2f\",tnum,trec>0?\"借\":\"贷\",trec)}" text1.txt text2.txt | sort
 
 Last edited by lxmxn on 2008-5-28 at 11:19 PM ] 
 
 
 
 |  | 
|  2008-5-28 23:17 |  | 
|  | 
 
| bat-zw 金牌会员
 
       永远的学习者
 
 
 积分 3105
 发帖 1276
 注册 2008-3-8
 状态 离线
 | 
| 『第 9 楼』:
 我日花了我两个小时写这个:
 
使用 LLM 解释/回答一下 
 
 
注:echo 第一个字符串后的空格实际都是tab(按下tab键),而论坛处理不了tab@echo off&setlocal enabledelayedexpansion
 echo 机构	笔数	借贷	金额
 for /l %%i in (15600,1,15617) do call :lp %%i
 echo 合计	!bi!	!借贷!	!num!.00
 pause>nul&goto :eof
 :lp
 for /f "tokens=1,2,3,4 delims= " %%i in (1.txt) do (
 if %%i equ %1 (
 set str1=%%i&set a=%%l&set a=!a:-=!&set a=!a:~,-3!
 if "%%k" equ "贷" (
 set /a str2+=%%j,str4-=!a!,bi+=%%j,num-=!a!
 ) else (
 set /a str2+=%%j,str4+=!a!,bi+=%%j,num+=!a!
 )
 if !str4! leq 0 (
 set str3=货
 ) else (
 set str3=借
 )
 )
 )
 if defined str1 echo !str1!	!str2!	!str3!	!str4!.00
 set str1=&set str2=0&set str3=&set str4=0
 
 (只做空格处理),所以请楼主自己将复制后的代码中的空格改回tab!
 
1.txt:
 15600_20080525_01.p106_prt
 15601        6        贷        -4341.00
 15602        2        借        20245.00
 15604        8        贷        -30310.00
 15605        1        贷        -3000.00
 15606        1        借        20.00
 15607        3        贷        -2700.00
 15608        1        贷        -20000.00
 15609        9        借        57650.24
 15610        4        借        68859.00
 15611        1        贷        -780.00
 15612        4        借        15540.00
 15613        2        贷        -3895.00
 15615        7        贷        -25560.00
 15617        1        借        500.00
 合计        50        借        72228.24
 
 15601_20080525_prt
 15600        4        贷        -91000.00
 15602        4        贷        -65150.00
 15604        5        借        4970.00
 15605        2        借        7340.00
 15606        2        借        1000.00
 15607        2        借        900.00
 15608        1        借        690.00
 15609        1        借        970.00
 15611        4        借        6800.00
 15612        2        借        73500.00
 15613        1        借        500.00
 15615        3        借        2190.00
 15616        1        贷        -105.00
 合计        32        贷        -57395.00
 15600_20080526_01.p106_prt
 15601        9        借        44114.00
 15604        25        贷        -295670.00
 15605        2        借        303000.00
 15606        2        贷        -10000.00
 15607        1        借        45000.00
 15608        2        借        10320.00
 15609        2        借        526.00
 15610        4        贷        -44560.00
 15611        1        贷        -2300.00
 15612        5        贷        -3250.00
 15613        1        贷        -3003.00
 15615        4        借        31800.00
 15616        6        借        40990.00
 合计        64        借        116967.00
 
 15601_20080526_01.1a1_prt
 15600        3        借        22900.00
 15602        2        贷        -8000.00
 15604        19        借        33560.00
 15605        5        借        9053.00
 15606        5        借        30247.03
 15607        8        借        62750.00
 15608        1        借        450.00
 15609        3        贷        -390.00
 15610        5        借        15600.00
 15611        3        借        6400.00
 15612        1        借        840.00
 15613        2        借        28400.00
 15615        3        贷        -48200.00
 合计        60        借        153610.03
 
 
附运行后的结果:
 机构    笔数    借贷    金额
 15600   7       货      -68100.00
 15601   15      借      39773.00
 15602   8       货      -52905.00
 15604   57      货      -287450.00
 15605   10      借      316393.00
 15606   10      借      21267.00
 15607   14      借      105950.00
 15608   5       货      -8540.00
 15609   15      借      58756.00
 15610   13      借      39899.00
 15611   9       借      10120.00
 15612   12      借      86630.00
 15613   6       借      22002.00
 15615   17      货      -39770.00
 15616   7       借      40885.00
 15617   1       借      500.00
 合计    206             285410.00
 
 
 Last edited by zw19750516 on 2008-5-28 at 11:47 PM ] 
 
 
 
 
 |  
                  |  批处理之家新域名:www.bathome.net
 |  | 
|  2008-5-28 23:23 |  | 
|  | 
 
| 26933062 银牌会员
 
      
 
 
 
 积分 2268
 发帖 879
 注册 2006-12-19
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
也来一个,没计算后面的小数。 
看楼上几位好像都没计算小数? 
: @echo off&setlocal enabledelayedexpansion
 for /f "tokens=1-4 delims= " %%a in (text1.txt text2.txt) do (
 if not "%%d"=="" (
 if not "%%a"=="合计" set "max=%%d"&set /a _%%a+=!max:~0,-3!,.%%a+=%%b
 ))
 for /f "tokens=1,2 delims=.=" %%a in ('set .') do (
 if !_%%a! lss 0 (set n=贷) else set n=借
 set "m=%%b    "&set /a str1+=%%b,str2+=!_%%a!
 echo %%a  !m:~0,3! !n!  !_%%a!
 )
 if !str2! lss 0 (set n=贷) else set n=借
 echo.&echo 合计: !str1!  !n! !str2!
 pause>nul
 
 
 
 
 
 |  
                  |  致精致简!
 |  | 
|  2008-5-29 01:39 |  | 
|  | 
 
| lxmxn 版主
 
         
 
 
 积分 11386
 发帖 4938
 注册 2006-7-23
 状态 离线
 | 
| 『第 11 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
如果有Perl的环境可以试试这个: #  perl -anle 'if($F=~/^\d+$/){
 hash->{$F}->{"tot"}+=$F;
 hash->{$F}->{"rec"}+=$F;
 }
 END{
 print "机构      笔数      借贷      金额";
 foreach(sort keys %hash){
 hash->{"tot"}+=hash->{$_}->{"tot"};
 hash->{"rec"}+=hash->{$_}->{"rec"};
 printf("%-10s%-10d%-10s%-10.2f\n",$_,hash->{$_}->{"rec"},hash->{$_}->{"tot"}>0?"借":"贷",hash->{$_}->{"tot"})
 }
 printf("总计      %-10d%-10s%-10.2f\n",hash->{"rec"},hash->{"tot"}>0?"借":"贷",hash->{"tot"});
 }' text1.txt  text2.txt
 机构      笔数      借贷      金额
 15600     7         贷        -68100.00
 15601     15        借        39773.00
 15602     8         贷        -52905.00
 15604     57        贷        -287450.00
 15605     10        借        316393.00
 15606     10        借        21267.03
 15607     14        借        105950.00
 15608     5         贷        -8540.00
 15609     15        借        58756.24
 15610     13        借        39899.00
 15611     9         借        10120.00
 15612     12        借        86630.00
 15613     6         借        22002.00
 15615     17        贷        -39770.00
 15616     7         借        40885.00
 15617     1         借        500.00
 总计      206       借        285410.27
 #
 
 Last edited by lxmxn on 2008-5-29 at 02:05 AM ]
 
 
 
 |  | 
|  2008-5-29 02:03 |  | 
|  | 
 
| 26933062 银牌会员
 
      
 
 
 
 积分 2268
 发帖 879
 注册 2006-12-19
 状态 离线
 | 
| 『第 12 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
计算这个小数还真麻烦,到头来自己都不知道是怎么算的了。结果倒好像对了。 @echo off&setlocal enabledelayedexpansion
 echo 机构  笔数 借贷 金额
 echo.
 for /f "tokens=1-5 delims=. " %%a in (a.txt b.txt) do (
 if not "%%d"=="" (
 if not "%%a"=="合计" (
 set "max=%%d"&set /a _%%avar+=1,_%%anum+=1%%e
 set /a _%%a+=max,.%%a+=%%b,hj+=1%%e,k+=1
 )))
 set /a k*=100,hj-=k
 set hjw=!hj:~-2,2!&set "hj=!hj:~0,-2!"
 if not defined hj set /a hj=0
 for /f "tokens=1,2 delims=.=" %%a in ('set .') do (
 set x=!_%%anum:~-2,2!
 set /a _%%avar*=100,_%%anum-=_%%avar
 set z=!_%%anum:~0,-2!
 if not defined z set /a z=0
 if !_%%a! lss 0 (set n=贷) else set n=借
 set "m=%%b    "&set /a str1+=%%b,str2+=!_%%a!,_%%a+=z
 echo %%a  !m:~0,3! !n!  !_%%a!.!x!
 set z=&set x=
 )
 if !str2! lss 0 (set n=贷) else set n=借
 set /a str2+=hj
 echo.&echo 合计: !str1!  !n!  !str2!.!hjw!
 pause>nul
 
 
 
 
 
 |  
                  |  致精致简!
 |  | 
|  2008-5-29 03:18 |  | 
|  | 
 
| xycoordinate 中级用户
 
    
 
 
 积分 493
 发帖 228
 注册 2007-2-16
 来自 安徽
 状态 离线
 |  | 
|  2008-5-29 08:18 |  | 
|  | 
 
| xycoordinate 中级用户
 
    
 
 
 积分 493
 发帖 228
 注册 2007-2-16
 来自 安徽
 状态 离线
 | 
| 『第 14 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
test.bat echo.机构      笔数      借贷      金额&&gawk --posix "$1~/^+$/{rec+=$NF;num+=$2;sum+=$NF;} END{for(t in rec){printf(\"%-10s%-10d%-10.2s%-10.2f\n\",t,num,rec>0?\"借\":\"贷\",rec);tnum+=num;trec+=rec} ;printf(\"合计:    %-10d%-10s%-10.2f\",tnum,trec>0?\"借\":\"贷\",trec)}" text1.txt text2.txt | sort
 
 
难道只能在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
 
 
 
 |  | 
|  2008-5-29 09:01 |  | 
|  | 
 
| radem 高级用户
 
     CMD感染者
 
 
 积分 691
 发帖 383
 注册 2008-5-23
 状态 离线
 |  | 
|  2008-5-29 11:34 |  |