免费注册 查看新帖 |

Chinaunix

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

[文本处理] 文件每一行后面加分类序号和总数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-17 10:12 |只看该作者 |倒序浏览
cat 1(输入文件)
  1. lisi
  2. lisi
  3. lisi
  4. wangwu
  5. zhangsan
  6. zhangsan
  7. zhangsan
  8. zhangsan
  9. zhangsan
  10. zhaoliu
  11. zhaoliu
  12. zhaoliu
复制代码
cat 2 (目标文件)
  1. lisi 1 3
  2. lisi 2 3
  3. lisi 3 3
  4. wangwu 1 1
  5. zhangsan 1 5
  6. zhangsan 2 5
  7. zhangsan 3 5
  8. zhangsan 4 5
  9. zhangsan 5 5
  10. zhaoliu 1 3
  11. zhaoliu 2 3
  12. zhaoliu 3 3
复制代码
即第二列是某一个类别的序号数,第三列是某一个类别的总数

我的做法是
  1. awk -F" " '{if(NR==FNR)a[$1]++;else{b[$1]++;print $0,b[$1],a[$1]}}' 1 1 > 2
复制代码
但是这样需要输入2次文件1,由于前后都有管道,输入2次就必须拆开了。(换句话说就是1是临时文件,我不想存。)
只输入一次能否解决这样的问题?求解答。(就是awk '{xxxxxxxxxxxxxxxxxxxxxxx}' 1 > 2 这种形式的)

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-08 06:20:00数据库技术版块每日发帖之星
日期:2015-08-29 06:20:00数据库技术版块每日发帖之星
日期:2015-08-29 06:20:00数据库技术版块每日发帖之星
日期:2015-09-18 06:20:00数据库技术版块每周发帖之星
日期:2015-11-06 19:56:51数据库技术版块每日发帖之星
日期:2016-01-22 06:20:00数据库技术版块每日发帖之星
日期:2016-02-05 06:20:00
2 [报告]
发表于 2013-01-17 10:44 |只看该作者
  1. awk '{if(!a[$0]++)b[m++]=$0}END{for (i=0;i<m;i++){for(j=1;j<=a[b[i]];j++)print b[i],j,a[b[i]]}}' a.txt
复制代码

论坛徽章:
0
3 [报告]
发表于 2013-01-17 11:27 |只看该作者
回复 2# asdf2110
多谢,我想复杂了

   

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
4 [报告]
发表于 2013-01-17 15:07 |只看该作者
  1. awk '{a[$1]++}END{for (i in a){for(j=1;j<=a[i];j++)print i,j,a[i]}}' urfile
复制代码

论坛徽章:
0
5 [报告]
发表于 2013-01-17 15:19 |只看该作者
回复 4# 代号:军刀
用我的测试文件,这个顺序就乱了。 for in 取数组保证不了顺序


   

论坛徽章:
0
6 [报告]
发表于 2013-01-17 17:06 |只看该作者
udevu 发表于 2013-01-17 15:19
回复 4# 代号:军刀
用我的测试文件,这个顺序就乱了。 for in 取数组保证不了顺序


加个行号就好了,按照行号输出
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP