免费注册 查看新帖 |

Chinaunix

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

[文本处理] 一个送菜的对awk的疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-03-19 12:04 |只看该作者 |倒序浏览
在txt文档中 有 五个属性 分别为 品名  数量  单位  单价  总价. Eg:
菠菜     5    斤     1.5     7.5
菠菜     6    斤     1.5     9
青菜     3    斤     3        9
罐头     2    瓶     10      20
菠菜     2    斤     1.2     2.4
......
......
......
其中 我想按照品名来分类把数量求和,总价求和,格式化输出遇到一个问题 就是同一个品名单价可能不一样 要加一个判断,同一品名单价不同时按照 相同单价来分类:其结果输出为:
菠菜     11     斤     1.5     16.5
菠菜     2       斤     1.2     2.4
青菜 ..............


用awk如何写?

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
2 [报告]
发表于 2015-03-19 12:33 |只看该作者
本帖最后由 zsszss0000 于 2015-03-19 12:34 编辑
  1. awk '{a[$1,$3,$4]+=$2}END{for(i in a){split(i,b,SUBSEP);print b[1],a[i],b[2],b[3],a[i]*b[3]}}' file | column -t
复制代码
  1. 菠菜  2   斤  1.2  2.4
  2. 菠菜  11  斤  1.5  16.5
  3. 罐头  2   瓶  10   20
  4. 青菜  3   斤  3    9
复制代码
目测你是要这个结果,不过你的txt文件中有两个不同单价的菠菜。

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2015-03-19 12:37 |只看该作者
回复 1# bamqjurgg

$ awk '{k=sprintf("%10s%9.3f",$1,9999-$4);$2+=a[k,2];$5+=a[k,5];for(n=1;n<=NF;n++)a[k,n]=$n;}END{t=asorti(a,b);for(n=1;n<=t;n++){s=s a[b[n]]"\t";if(++c%5==0){print s;s=""}}}' FILE
罐头        2        瓶        10        20       
菠菜        11        斤        1.5        16.5       
菠菜        2        斤        1.2        2.4       
青菜        3        斤        3        9       

论坛徽章:
0
4 [报告]
发表于 2015-03-19 12:39 |只看该作者
many many thanks 就是这个结果。

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
5 [报告]
发表于 2015-03-19 13:03 |只看该作者
这年头送个菜都要懂编程了, 伤不起啊

论坛徽章:
0
6 [报告]
发表于 2015-03-19 13:17 |只看该作者
回复 5# reyleon
被逼的啊,业务系统没这报表,excel处理太麻烦,关键是量多,还不如转成文本格式化好再还原回去。


   

论坛徽章:
0
7 [报告]
发表于 2015-03-19 13:46 |只看该作者
贴上最后的语句 精髓都是二楼的
sed '1,17d' name.txt | tac | sed '1,3d' | tac | awk '{print $5,$17,$6,$7,$20}' | awk '{a[$1,$3,$4]+=$2}END{for(i in a){split(i,b,SUBSEP);print b[1],a[i],b[2],b[3],a[i]*b[3]}}' | sort >result

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
8 [报告]
发表于 2015-03-19 15:55 |只看该作者
本帖最后由 我是一隻羊 于 2015-03-19 15:55 编辑

回复 7# bamqjurgg


你把最原始的文本贴出来...其实也是能一条awk跑出你要的结果的...
就是你的name.txt

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
9 [报告]
发表于 2015-03-20 02:12 |只看该作者
本帖最后由 聆雨淋夜 于 2015-03-20 02:16 编辑
  1. awk '{a[$1" "$4]+=$2;b[$1" "$4]+=$5;c[$1" "$4]=$1;d[$1" "$4]=$4;n=$3}END{for(i in a)print c[i]"\t"a[i]"\t"n"\t"d[i]"\t"b[i]}' file
  2. 罐头        2        斤        10        20
  3. 青菜        3        斤        3        9
  4. 菠菜        2        斤        1.2        2.4
  5. 菠菜        11        斤        1.5        16.5
复制代码
我每次只能想出最蠢的办法,全用二维数组了

论坛徽章:
0
10 [报告]
发表于 2015-03-20 06:26 |只看该作者
在这里贴出excel转换的原始txt:

客户商品销售报表                                                                                                                                                                                               
                                                                                                                                                                                               
公司编码:B104.惠州分公司                                                                                                                                                                                               
客户编码:1260                                                                                                                                                                                               
客户名称:全部                                                                                                                                                                                               
商品编码:全部                                                                                                                                                                                               
商品名称:全部                                                                                                                                                                                               
送货开始日期:2015-01-01                                                                                                                                                                                               
送货结束日期:2015-01-05                                                                                                                                                                                               
商品属性:0.全部商品                                                                                                                                                                                               
商品分类:全部                                                                                                                                                                                               
配菜编号起:1                                                                                                                                                                                               
配菜编号止:999                                                                                                                                                                                               
:999                                                                                                                                                                                               
                                                                                                                                                                                               
门店编码        客户编码        商品编码        客户名称        商品名称        单位        回单售价        平均进价        回单与进价价差        毛利        毛利率(%)        分录号        分类编码        分类名称        送货数量        送货售价        回单数量        销售成本        送货金额        回单金额        送货与回单价差        商品类型        送菜编号        送货日期        订单类型
毛利.                                                                                28.93        0                                                                                .                1900-01-01 00:00:00       
B104.惠州分公司        1260        000010        城区司法局        西生菜        斤        4.50        3.10        1.40        15.96        31.11        10        010101        叶菜        11.40        4.50        11.40        35.34        51.30        51.30        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        000044        城区司法局        菜心        斤        2.80        1.60        1.20        10.80        42.86        12        010101        叶菜        9.00        2.80        9.00        14.40        25.20        25.20        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        000131        城区司法局        春菜        斤        2.60        1.50        1.10        4.40        42.31        1        010101        叶菜        4.00        2.60        4.00        6.00        10.40        10.40        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        001042        城区司法局        西兰花        斤        4.80        3.80        1.00        10.00        20.83        4        010201        瓜果        10.00        4.80        10.00        38.00        48.00        48.00        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        001046        城区司法局        冬瓜        斤        1.60        0.90        0.70        3.15        43.75        2        010201        瓜果        4.50        1.60        4.50        4.05        7.20        7.20        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        001048        城区司法局        茄瓜        斤        2.80        1.90        0.90        9.90        32.14        13        010201        瓜果        11.00        2.80        11.00        20.90        30.80        30.80        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        001274        城区司法局        尖椒        斤        3.50        2.10        1.40        2.80        40.00        5        010201        瓜果        2.00        3.50        2.00        4.20        7.00        7.00        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        001275        城区司法局        红尖椒        斤        6.50        2.50        4.00        4.00        61.54        10        010201        瓜果        1.00        6.50        1.00        2.50        6.50        6.50        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        001276        城区司法局        指天椒        斤        9.50        6.00        3.50        1.05        36.84        15        010201        瓜果        0.30        9.50        0.30        1.80        2.85        2.85        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        002001        城区司法局        芫茜(香菜)        斤        8.50        7.50        1.00        0.50        11.76        9        010301        配料        0.50        8.50        0.50        3.75        4.25        4.25        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        002005        城区司法局        蒜米        斤        5.50        2.62        2.88        5.76        52.36        4        010301        配料        2.00        5.50        2.00        5.24        11.00        11.00        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        002044        城区司法局        红头葱(香葱)        斤        4.50        2.20        2.30        2.30        51.11        9        010301        配料        1.00        4.50        1.00        2.20        4.50        4.50        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        002044        城区司法局        红头葱(香葱)        斤        4.50        2.20        2.30        2.30        51.11        3        010301        配料        1.00        4.50        1.00        2.20        4.50        4.50        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        013004        城区司法局        河粉        斤        1.50        0.92        0.58        5.80        38.67        7        030101        河粉、米粉类        10.00        1.50        10.00        9.20        15.00        15.00        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        020237        城区司法局        冻带鱼        斤        14.50        8.70        5.80        63.80        40.00        11        050201        冻鱼                14.50        11.00        95.70                159.50        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        030261        城区司法局        后瘦肉        斤        13.80        10.20        3.60        8.64        26.09        6        070101        猪肉        2.40        13.80        2.40        24.48        33.12        33.12        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        030261        城区司法局        后瘦肉        斤        13.80        10.20        3.60        14.40        26.09        3        070101        猪肉        4.00        13.80        4.00        40.80        55.20        55.20        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        030281        城区司法局        夹心肉        斤        13.00        10.00        3.00        31.50        23.08        7        070101        猪肉        10.50        13.00        10.50        105.00        136.50        136.50        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        030281        城区司法局        夹心肉        斤        13.00        10.00        3.00        9.00        23.08        14        070101        猪肉        3.00        13.00        3.00        30.00        39.00        39.00        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        030306        城区司法局        猪扇骨        斤        13.50        10.00        3.50        7.00        25.93        1        070102        猪副        2.00        13.50        2.00        20.00        27.00        27.00        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        243101        城区司法局        咸蛋        个        1.20        1.10        0.10        0.50        8.33        2        100102        咸蛋        5.00        1.20        5.00        5.50        6.00        6.00        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        260148        城区司法局        中惠1号米(25kg)        包        190.00        162.50        27.50        27.50        14.47        8        100501        国产大米        1.00        190.00        1.00        162.50        190.00        190.00        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        265001        城区司法局        散装生粉        斤        3.50        1.70        1.80        9.00        51.43        8        100701        国产生粉        5.00        3.50        5.00        8.50        17.50        17.50        0.00        01.供应商送货验收        27        2015-01-04 00:00:00       
B104.惠州分公司        1260        412089        城区司法局        梅菜        斤        3.50        1.42        2.08        8.32        59.43        5        102001        散装腌菜        4.00        3.50        4.00        5.68        14.00        14.00        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        412090        城区司法局        甜梅菜        斤        6.50        3.50        3.00        3.00        46.15        6        102001        散装腌菜        1.00        6.50        1.00        3.50        6.50        6.50        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        443581        城区司法局        钢丝球        包        1.50        0.49        1.01        5.05        67.33        11        120202        厨房辅助工具        5.00        1.50        5.00        2.45        7.50        7.50        0.00        01.供应商送货验收        27        2015-01-05 00:00:00       
B104.惠州分公司        1260        444236        城区司法局        超大号佳能平口保鲜袋(30cm*40cm)100个        卷        12.00        8.70        3.30        3.30        27.50        16        120205        锡纸、保鲜纸        1.00                1.00        8.70                12.00                01.供应商送货验收        27        2015-01-04 00:00:00       
合计:28                                                                        269.73                                        111.60                122.60                760.82        932.32                                       
                                                                                                                                                                                               
打印人:ayu     打印时间:2015-03-20 6:24:22                                                                                                                                                                                               
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP