免费注册 查看新帖 |

Chinaunix

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

请问如何找文本中的重复项 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-10 15:28 |只看该作者 |倒序浏览
有如下文本:
1005|2001|屏山1组|1|11123
1005|2001|屏山1组|2|2334
......
1005|2002|屏山2组|1|9998
......
第2列是分组,第4列是每组的序号,每组均从1开始编,每组不能有重复序号.即第2列和第4列不能有重复记录,用程序找出来.
请问用awk或shell怎么实现?

论坛徽章:
0
2 [报告]
发表于 2006-12-10 16:27 |只看该作者
输出格式类似:
2001 2:  2 4

表示2001年, 2号记录出现重复, 在这个文件的第二行, 第四行.


  1. awk -F"|" '
  2. {
  3.     key = $2" "$4;
  4.     count[key]++;
  5.     value[key] = value[key]" "NR;
  6. }
  7. END {
  8.     for (key in count)
  9.         if (count[key] > 1)
  10.             printf("%s: %s\n", key, value[key]);
  11. }
  12. ' urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2006-12-10 23:34 |只看该作者
多谢

论坛徽章:
0
4 [报告]
发表于 2006-12-11 09:05 |只看该作者
try
  1. awk -F'|' '!dup[$2,$4]++' urfile
复制代码

[ 本帖最后由 awk就是awp加ak 于 2006-12-11 09:07 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2006-12-17 09:28 |只看该作者
原帖由 awk就是awp加ak 于 2006-12-11 09:05 发表
try
  1. awk -F'|' '!dup[$2,$4]++' urfile
复制代码

老大,你的程序段有问题,运行结果是错误的。

论坛徽章:
0
6 [报告]
发表于 2006-12-18 11:43 |只看该作者
我是把重复的直接去掉了

论坛徽章:
0
7 [报告]
发表于 2006-12-18 22:49 |只看该作者
不是要去掉,而是要找出来重新编号.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP