免费注册 查看新帖 |

Chinaunix

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

如何用SHELL实现分类汇总? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-12 20:08 |只看该作者 |倒序浏览
比如我有如下字段,第一列已经排好序:
1  a
1  b
1  a
1  c
2  b
2  b
2  c
3  c
3  a
4  e
4  e
4  e
4  e
如何实现显示第一列相同的记录类别中,有多少个不同的第2个字段.
如上结果应该是:
1 3
2 2
3 2
4 1

如果实现呢?多谢,多谢.

论坛徽章:
0
2 [报告]
发表于 2007-01-12 20:57 |只看该作者

回复 1楼 zhao_yi707 的帖子

惭愧,思考了大概20分钟才想出来。
sort -u testsrc1.txt | awk '{element[$1]++;} END{for(item in element){print item," ",element[item]}}' | sort

论坛徽章:
0
3 [报告]
发表于 2007-01-13 10:00 |只看该作者
sort test.file|uniq |cut -d" " -f1 |uniq -c|rev
1 3      
2 2      
3 2      
4 1

论坛徽章:
0
4 [报告]
发表于 2007-01-13 11:50 |只看该作者
try
  1. awk '{ if (!count[$1,$2]++) sum[$1]++; }
  2. END { for (i in sum) print i ": " sum[i]; }' urfile
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-01-15 13:03 |只看该作者

达到效果 担不是最好的方法

#!bin/sh
#set -x
cat aa |sort -u | awk '{print $1}' >test.txt
cat test.txt | while read ROW
do
  COUNT=`cat test.txt |grep "$ROW"|wc -l`
  echo "$COUNT $ROW"  >>cc.txt
done
bash-2.05# sort -u cc.txt
       1 4
       2 2
       2 3
       3 1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP