免费注册 查看新帖 |

Chinaunix

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

求这样的一段代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-07 10:04 |只看该作者 |倒序浏览
有一个科目余额文件file1,格式是币种)|(科目代码)|(借方余额)|(贷方余额)具体如下:
人民币|   171|  1982.00|
人民币|   173|    856.22|
欧元  |   888|
美元  |   269|               |     958.26
人民币|   268|               |   1569.98
……
另有一个统计各科目余额的关系文件file2,格式是:(统计代码)=(科目代号)(运算符号)(科目代号)具体如下:
A3486=171+173
A2869=269+268-171
A2968=173+175+179-269……
……
要求以关系文件file2把file1中相应科目的余额按照相应的运算统计出来,再四舍五入至百元,如果file2中提供的科目代码不存在则视为0,上例中应输出为:
A3486=28
A2869=5
A2968=-1
……

先谢了!

论坛徽章:
0
2 [报告]
发表于 2005-08-08 07:46 |只看该作者

求这样的一段代码

怎么没有人帮我吗?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2005-08-08 11:39 |只看该作者

求这样的一段代码

  1. (cat <<\EOF
  2. awk -F '|'  '
  3. {a[$2]=$3-$4}
  4. END{
  5. EOF
  6. sed 's/ //g;s/^/b["/;s/$/]/;s/=/"]=a[/;s/[+-]/]+a[/g' file2
  7. cat <<\EOF

  8. for (i in b) printf("%s=%.0f\n",i,b[i]/100)}' file1
  9. EOF
  10. ) |sh
复制代码

论坛徽章:
0
4 [报告]
发表于 2005-08-09 08:49 |只看该作者

求这样的一段代码

大哥,不行啊,我试了,没有报错,可输出的文件统计出来的数全部为0,如下:
A3486=0
A2869=0
A2968=0
……
况且我的file2还存在像这样的行:
KJ0060=
……
应仍然输出:
KJ0060=0
……
老兄帮帮我!

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
5 [报告]
发表于 2005-08-09 09:19 |只看该作者

求这样的一段代码

{a[$2]=$3-$4} 改成
a[$2+0]=$3-$4试试

另外我逻辑上的算法和你的是不同的
我都是用借方余额-贷方余额求的值,关键是给你一个思路,其它的应该自己完成

论坛徽章:
0
6 [报告]
发表于 2005-08-09 13:43 |只看该作者

求这样的一段代码

谢这位大哥,我是一个菜鸟,实在看不懂,
我把以上的file1改成只有币种、科目代号、余额这三栏(如下)应该怎么办?
人民币|171|1982.00
人民币|173|856.22
欧元|888|
美元|269|958.26
人民币|268|1569.98
……
请帮帮我!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-08-09 13:48 |只看该作者

求这样的一段代码

  

你要把你的不一样的格式列出来呀,不要一次挤一点呀,别人只能根据现有的来写
改一下waker的
  1. (cat <<\EOF
  2. awk -F '|'  '
  3. {a[$2]=$3}
  4. END{
  5. EOF
  6. sed 's/ //g;s/^/b["/;s/$/]/;s/=/"]=a[/;s/[+-]/]&a[/g' file2
  7. cat <<\EOF

  8. for (i in b) printf("%s=%.0f\n",i,b[i]/100)}' file1
  9. EOF
  10. ) |sh
复制代码

论坛徽章:
0
8 [报告]
发表于 2005-08-09 14:03 |只看该作者

求这样的一段代码

好吧!
有一个科目余额文件file1,格式是(币种)|(科目代码)|(科目余额)如下:
人民币|171|1982.00
人民币|173|856.22
欧元|888|
美元|269|958.26
人民币|268|1569.98
……
另有一个统计各科目余额的关系文件file2,格式是:(统计代码)=(科目代号)(运算符号)(科目代号)具体如下:
A3486=171+173
A2869=269+268-171
A3696=
A2968=173+175+179-269……
……
要求以关系文件file2把file1中相应科目的余额按照相应的运算统计出来,再四舍五入至百元,如果file2中提供的科目代码不存在则视为0,如:
A3486=28
A2869=5
A3696=0
A2968=-1
……
不知我说清楚没有?

论坛徽章:
0
9 [报告]
发表于 2005-08-09 14:04 |只看该作者

求这样的一段代码

好吧!
有一个科目余额文件file1,格式是(币种)|(科目代码)|(科目余额)如下:
人民币|171|1982.00
人民币|173|856.22
欧元|888|
美元|269|958.26
人民币|268|1569.98
……
另有一个统计各科目余额的关系文件file2,格式是:(统计代码)=(科目代号)(运算符号)(科目代号)具体如下:
A3486=171+173
A2869=269+268-171
A3696=
A2968=173+175+179-269……
……
要求以关系文件file2把file1中相应科目的余额按照相应的运算统计出来,再四舍五入至百元,如果file2中提供的科目代码不存在则视为0,输出的file3如:
A3486=28
A2869=5
A3696=0
A2968=-1
……
不知我说清楚没有?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2005-08-09 14:21 |只看该作者

求这样的一段代码

(cat <<\EOF
awk -F '|'  '
{a[$2]=$3}
END{
EOF
#sed这一行加一个s/a\[\]/0/,将无值的直接变成0
sed 's/ //g;s/^/b["/;s/$/]/;s/=/"]=a[/;s/[+-]/]&a[/g;s/a\[\]/0/' file2
cat <<\EOF

for (i in b) printf("%s=%.0f\n",i,b/100)}' file1
EOF
)|sh
#结果如下
A2968=-1
A3696=0
A3486=28
A2869=5
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP