免费注册 查看新帖 |

Chinaunix

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

请教如去除多段文本里的重复行? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2012-03-08 11:18 |显示全部楼层
本帖最后由 yangkyo821 于 2012-03-08 12:05 编辑
  1. awk '!a[$0]++;/^\*/{delete a}' file
复制代码
  1. * 2001 07 21 07 55 13.300  43.81670   84.23330  16.000  
  2. 2001 07 21 07 56 40.300   BAI  041.85900
  3. 2001 07 21 07 57 19.700   AKE  041.14500
  4. 2001 07 21 07 55 28.300   XIN   043.56400
  5. * 2001 09 13 20 00 29.000  41.36670   75.51670  15.000
  6. 2001 09 13 20 01 22.000   WUQ   039.74900
  7. 2001 09 13 20 01 24.700   ATU  039.80400
  8. 2001 09 13 20 01 42.500   AHE  040.93500
  9. * 2001 07 21 07 55 13.300  43.81670   84.23330  16.000  
  10. 2001 07 21 07 56 40.300   BAI  041.85900
  11. 2001 07 21 07 57 19.700   AKE  041.14500
  12. 2001 07 21 07 55 28.300   XIN   043.56400
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-03-08 12:10 |显示全部楼层
lbbei 发表于 2012-03-08 12:05
有点问题,不管把第一段的怎么换位置结果里都有2个 BAI,其它段都没事, 这是什么问题呢?第一段 ...

2001 07 21 07 56 40.300   BAI  041.85900
2001 07 21 07 57 19.700   AKE  041.14500
2001 07 21 07 55 28.300   XIN   043.56400
2001 07 21 07 57 19.700   AKE  041.14500
2001 07 21 07 56 01.600   BAI  041.85900

看仔细了吗?你第一段的两个BAI里面的字段是不同的

论坛徽章:
0
3 [报告]
发表于 2012-03-08 12:12 |显示全部楼层
多说无用,看我运行的结果吧
  1. [joe@joe-laptop ~]$ cat file
  2. * 2001 07 21 07 55 13.300  43.81670   84.23330  16.000
  3. 2001 07 21 07 56 40.300   BAI  041.85900
  4. 2001 07 21 07 57 19.700   AKE  041.14500
  5. 2001 07 21 07 55 28.300   XIN   043.56400
  6. 2001 07 21 07 57 19.700   AKE  041.14500
  7. 2001 07 21 07 56 40.300   BAI  041.85900
  8. * 2001 09 13 20 00 29.000  41.36670   75.51670  15.000
  9. 2001 09 13 20 01 22.000   WUQ   039.74900
  10. 2001 09 13 20 01 24.700   ATU  039.80400
  11. 2001 09 13 20 01 42.500   AHE  040.93500
  12. * 2001 07 21 07 55 13.300  43.81670   84.23330  16.000
  13. 2001 07 21 07 56 40.300   BAI  041.85900
  14. 2001 07 21 07 57 19.700   AKE  041.14500
  15. 2001 07 21 07 55 28.300   XIN   043.56400
  16. 2001 07 21 07 57 19.700   AKE  041.14500
  17. [joe@joe-laptop ~]$ awk '!a[$0]++;/^\*/{delete a}' file
  18. * 2001 07 21 07 55 13.300  43.81670   84.23330  16.000
  19. 2001 07 21 07 56 40.300   BAI  041.85900
  20. 2001 07 21 07 57 19.700   AKE  041.14500
  21. 2001 07 21 07 55 28.300   XIN   043.56400
  22. * 2001 09 13 20 00 29.000  41.36670   75.51670  15.000
  23. 2001 09 13 20 01 22.000   WUQ   039.74900
  24. 2001 09 13 20 01 24.700   ATU  039.80400
  25. 2001 09 13 20 01 42.500   AHE  040.93500
  26. * 2001 07 21 07 55 13.300  43.81670   84.23330  16.000
  27. 2001 07 21 07 56 40.300   BAI  041.85900
  28. 2001 07 21 07 57 19.700   AKE  041.14500
  29. 2001 07 21 07 55 28.300   XIN   043.56400
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-03-08 12:14 |显示全部楼层
如果你要的不是去重复行,而是根据倒数第二个字段和后面跟的数字来判断是否重复。那只能说你描述问题太不清楚了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP