免费注册 查看新帖 |

Chinaunix

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

放分求教一个程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-28 11:11 |只看该作者 |倒序浏览
20可用积分
数据如下
1 a
2 b
3 c
4 d
5 a
6 c

要把如上数据切割成两个文件
(1)第二列有重复的放在一起
1 a
5 a
3 c
6 c
(2) 第二列不重复的放在一起
2 b
4 d

不知道用awk来怎么写,求教了,分不够可以再加的

最佳答案

查看完整内容

awk 'NR==FNR{a[$2]++}NR>FNR{if(a[$2]>1) print > "1.txt";else print > "2.txt"}' urfile urfile

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
2 [报告]
发表于 2007-11-28 11:11 |只看该作者
awk 'NR==FNR{a[$2]++}NR>FNR{if(a[$2]>1) print > "1.txt";else print > "2.txt"}' urfile urfile

论坛徽章:
0
3 [报告]
发表于 2007-11-28 11:22 |只看该作者

  1. awk '{
  2. a[$2]++;
  3. b[$2,a[$2]]=$0;
  4. }
  5. END{
  6. for(i in a){
  7.   if(a[i]==1){
  8.     print b[i,1] >>"fileA";
  9.   }else{
  10.     for(j=1;j<=a[i];j++)print b[i,j] >>"fileB";
  11.   }
  12. }}'  数据文件
复制代码

论坛徽章:
0
4 [报告]
发表于 2007-11-28 11:32 |只看该作者
这么多分 啧啧
来晚了 凑热闹


  1. awk '{a[$1]=$2;b[$2]++}END{for(i in a){if(b[a[i]] > 1){print i,a[i] > "A"}else{print i,a[i] > "B"}}}'  urfile
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-11-28 11:35 |只看该作者
我等不会用awk数组之人只能看着眼红了...

论坛徽章:
0
6 [报告]
发表于 2007-11-28 11:37 |只看该作者

回复 #5 BLZer 的帖子

兄弟来个sed滴,

论坛徽章:
0
7 [报告]
发表于 2007-11-28 11:53 |只看该作者
三个都很强~~~~
哈哈哈顶
学习ing

论坛徽章:
0
8 [报告]
发表于 2007-11-28 12:59 |只看该作者
用sed(需要sort帮忙)写一个

  1. sort -k2 数据文件 | sed -r -n '
  2. $!{/\n/!N}
  3. / (.*)\n.*(\1)$/{w f1
  4. d}
  5. W f2
  6. D'
复制代码

结果分别保存在 f1 和 f2 中

论坛徽章:
0
9 [报告]
发表于 2007-11-28 13:55 |只看该作者
原帖由 davistar 于 2007-11-28 11:32 发表
这么多分 啧啧
来晚了 凑热闹


awk '{a[$1]=$2;b[$2]++}END{for(i in a){if(b[a] > 1){print i,a > "A"}else{print i,a > "B"}}}'  urfile

看懂了
相对于 上面两个awk的例子 依赖$1的不能有重复

论坛徽章:
0
10 [报告]
发表于 2007-11-28 14:35 |只看该作者
有一个问题,我的第二列特别的长,要20位数字的,好像作为数组名不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP