免费注册 查看新帖 |

Chinaunix

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

紧急救援! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-11-12 12:08 |只看该作者 |倒序浏览
ac=888801010000016
name=现金                          
itm=701  
ind=
amt=-5,684,663.93
dacc=0.00
cacc=0.00
&L
ac=888801010000024
name=往帐                  
itm=661  
ind=
amt=2,000,000.00
dacc=0.00
cacc=0.00
&L
ac=888801010000032
name=来帐                  
itm=662  
ind=
amt=-2,000,000.00
dacc=0.00
cacc=0.00
&L
&
对上述文本用AWK查找ac=888801010000032下amt;查找ac=888801010000024下amt值,并要加两个amt值若为0显示正确,不为0显示错误.

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
2 [报告]
发表于 2003-11-12 13:32 |只看该作者

紧急救援!

  1. #!/bin/sh
  2. a=`sed -n '/ac=888801010000032/'= filename`
  3. b=`sed -n '/ac=888801010000024/'= filename`
  4. amtline32=`expr $a + 4`
  5. amtline24=`expr $b + 4`
  6. amt32=`sed -n "${amtline32}p" filename|sed s'/^amt=//'|sed s'/,//'g`
  7. amt24=`sed -n "${amtline24}p" filename|sed s'/^amt=//'|sed s'/,//'g`
  8. total_amt=`echo "${amt32} + ${amt24}"|bc`
  9. if [ $total_amt -eq 0 ]
  10.   then
  11.     echo "ok"
  12.   else
  13.     echo "error"
  14. fi
复制代码

匆忙写的...至少上面这段数据可以处理,显然,繁是繁了点

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

紧急救援!

  1. cat ufile | sed -n 'N;N;N;N;N;N;s/\n/ /g;p;n;s/,//' | egrep 'ac=888801010000024|ac=888801010000032' | awk '{split($5,b,"=");c+=b[2]}END{if(c==0){print "正确"}else{print "错误"}}'
  2. 正确
复制代码

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
4 [报告]
发表于 2003-11-12 14:07 |只看该作者

紧急救援!



admirer的sed和awk已经炉火纯青,偶要慢慢消化消化

论坛徽章:
0
5 [报告]
发表于 2003-11-12 14:12 |只看该作者

紧急救援!

用这个试试:

$ nawk '{if($0!="&L"printf $0" ";else printf $0 " \n";next;}' temp | nawk '{if($1=="ac=888801010000032"x=substr(
$5,5); if($1=="ac=888801010000024"y=substr($5,5);if((x+y)!=0)print "Error!";else print "OK!";}'

$
OK!
OK!
OK!

$cat temp
ac=888801010000016
name=cash
itm=701
ind=
amt=-5,684,663.93
dacc=0.00
cacc=0.00
&L
ac=888801010000024
name=deposit
itm=661
ind=
amt=2,000,000.00
dacc=0.00
cacc=0.00
&L
ac=888801010000032
name=withdraw
itm=662
ind=
amt=-2,000,000.00
dacc=0.00
cacc=0.00
&L
&

$cat temp
ac=888801010000016
name=cash
itm=701
ind=
amt=-5,684,663.93
dacc=0.00
cacc=0.00
&L
ac=888801010000024
name=deposit
itm=661
ind=
amt=2,000,000.00
dacc=0.00
cacc=0.00
&L
ac=888801010000032
name=withdraw
itm=662
ind=
amt=-1,000,000.00
dacc=0.00
cacc=0.00
&L
&

$
Error!
Error!
Error!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP