免费注册 查看新帖 |

Chinaunix

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

关于awk包含空格以及=做为分隔符的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-12 11:38 |只看该作者 |倒序浏览
本帖最后由 luck_libiao 于 2010-06-12 11:43 编辑

有如下数据:
update ts_productorder set applytime5='20100612000000' where subscriberkey=50775650 and recid=3 and productorderkey5=999000000049281632;
update ts_productorder set applytime5='20100612000000' where subscriberkey=54016439 and recid=2 and productorderkey5=999000000049375891;
update ts_productorder set applytime1='20100612000000' where subscriberkey=53102121 and recid=3 and productorderkey1=999000000049347243;
update ts_productorder set applytime4='20100612000000' where subscriberkey=54022999 and recid=2 and productorderkey4=999000000049276174;
update ts_productorder set applytime2='20100612000000' where subscriberkey=55917492 and recid=3 and productorderkey2=999000000049426647;
update ts_productorder set applytime4='20100612000000' where subscriberkey=54852113 and recid=2 and productorderkey4=999000000049323308;
update ts_productorder set applytime4='20100612000000' where subscriberkey=53420560 and recid=2 and productorderkey4=999000000049330824;
update ts_productorder set applytime4='20100612000000' where subscriberkey=55434744 and recid=2 and productorderkey4=999000000049280350;

想要统计subscriberkey=后面的值是否存在重复的,并且输出各相同的值的统计数据!

如果不包含等号的话:
可以这样!
awk '{ a[$8]++} END{for (b in a) {print b,a} ' file
但是现在有个=号,又不想先将=给先去掉,是否有方法做呢?
看下之前的贴,都是说可以用[],但是我写成如下:
awk -F  "[= ]" '{ a[$8]++} END{for (b in a) {print b,a} ' file
不成功
awk -F  "[=\ ]" '{ a[$8]++} END{for (b in a) {print b,a} ' file也不成功,不知道如何是好!

论坛徽章:
0
2 [报告]
发表于 2010-06-12 11:43 |只看该作者
回复 1# luck_libiao


    什么叫相同值的统计数据?
过滤重复的?还是?把你要的在贴出来吧

求职 : 技术支持/维
论坛徽章:
0
3 [报告]
发表于 2010-06-12 11:45 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2010-06-12 11:46 |只看该作者
回复 2# iori809


    需要的数据为:
  50775650   10
   54016439   5
   53102121   3

即该列的数值以及 重复出现的次数!
现在关键是分割符的问题!既有= 又包含空格!不知道如何处理!

论坛徽章:
0
5 [报告]
发表于 2010-06-12 11:46 |只看该作者
awk '{ a[$8]++} END{for (b in a) {print b,a[b]} ' file
這個統計的不是
subscriberkey=55434744  等號後面的值出現得重複次數啊
樓主成功的要長什麽樣 以你給出的數據為例說明下唄

论坛徽章:
0
6 [报告]
发表于 2010-06-12 11:47 |只看该作者
回复 3# 99超人


    是可以,但是我想知道如何用分隔符来实现!

论坛徽章:
0
7 [报告]
发表于 2010-06-12 11:47 |只看该作者
我这里是可以的
awk -F  "[= ]" '{ a[$8]++} END{for (b in a) {print b,a[b]} ' file

论坛徽章:
0
8 [报告]
发表于 2010-06-12 11:51 |只看该作者
  1. awk -F "[= ]" '{a[$8]++}END{for(cnt in a)print cnt,a[cnt]}' file
复制代码
這個  嚴重懷疑樓主print後面跟數組變量名能用,不報錯?

论坛徽章:
0
9 [报告]
发表于 2010-06-12 11:51 |只看该作者
  1. 楼主你写的那个语句大括号的数量不匹配
复制代码

论坛徽章:
0
10 [报告]
发表于 2010-06-12 11:58 |只看该作者
回复 8# lkk2003rty


我先做了下取出=号,
awk -F "=" '{ print $1" "$2" "$3" "$4" "$5 }' billtype_Mem.sql > billtype_Mem.sql_1    ------是否还可以写成更简单的?
获得如下数据:
update ts_productorder set applytime5 '20100612000000' where subscriberkey 50775650 and recid 3 and productorderkey5 999000000049281632;
update ts_productorder set applytime5 '20100612000000' where subscriberkey 54016439 and recid 2 and productorderkey5 999000000049375891;
update ts_productorder set applytime1 '20100612000000' where subscriberkey 53102121 and recid 3 and productorderkey1 999000000049347243;
update ts_productorder set applytime4 '20100612000000' where subscriberkey 54022999 and recid 2 and productorderkey4 999000000049276174;
update ts_productorder set applytime2 '20100612000000' where subscriberkey 55917492 and recid 3 and productorderkey2 999000000049426647;
update ts_productorder set applytime4 '20100612000000' where subscriberkey 54852113 and recid 2 and productorderkey4 999000000049323308;
update ts_productorder set applytime4 '20100612000000' where subscriberkey 53420560 and recid 2 and productorderkey4 999000000049330824;
update ts_productorder set applytime4 '20100612000000' where subscriberkey 55434744 and recid 2 and productorderkey4 999000000049280350;

然后再用如下

awk ' { a[$8]++ } END { for ( b in a ) { print b,a } } '  billtype_Mem.sql_1
需要的结果为:
55434744 1
56604049 1
10735231 1
54653178 1
55917492 1
11433573 1
53102121 1
56628142 1
10103998 1
53956299 1
54852113 1
55486244 1
56056673 1
56391452 1
54254460 1
50775650 1
53102118 1
53420560 1
56783193 1
54653202 1
54022999 1
54016439 1
10337832 1
50369194 1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP