免费注册 查看新帖 |

Chinaunix

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

[文本处理] 怎么去掉重复的时间 [复制链接]

论坛徽章:
2
亥猪
日期:2013-12-24 16:24:04狮子座
日期:2014-01-03 14:56:30
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-11 14:28 |只看该作者 |倒序浏览
本帖最后由 bblxl2012 于 2013-07-11 14:31 编辑

test1|2012-02|Hais|3|
|2012-02|Mux|3|
|2012-02|Scc|2|
|2012-02|Spim|3|
|2012-02|Spis|2|
|2012-02|Uart|4|
|2012-03|Hais|11|
|2012-03|Include|21|
|2012-03|Mux|6|
|2012-03|Scc|7|
|2012-03|Spim|2|
|2012-03|Spis|1|
|2012-03|Top|29|
|2012-03|Uart|6|
|2012-03|Usb|3|
|2012-04|Hais|2|
|2012-04|Top|1|
abc|2012-02|Efc|4|
|2012-02|Mux|1|
|2012-03|Efc|12|
lihx|2012-02|Timer|1|
|2012-03|Timer|2|
|2012-04|Timer|1|
sueng|2012-02|Mpu|1|
|2012-02|Rcu|1|
|2012-03|Mpu|5|

我想让重复的时间变成1个。请教大虾。谢谢。

变成如下:
test1|2012-02|Hais|3|
||Mux|3|
||Scc|2|
||Spim|3|
||Spis|2|
||Uart|4|
|2012-03|Hais|11|
||Include|21|
||Mux|6|
||Scc|7|
||Spim|2|
||Spis|1|
||Top|29|
||Uart|6|
||Usb|3|
|2012-04|Hais|2|
||Top|1|

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
2 [报告]
发表于 2013-07-11 15:37 |只看该作者
  1. [root@localhost ~]# awk 'BEGIN{FS=OFS="|"}{$2=!a[$2]++?$2:""}1' i
  2. test1|2012-02|Hais|3|
  3. ||Mux|3|
  4. ||Scc|2|
  5. ||Spim|3|
  6. ||Spis|2|
  7. ||Uart|4|
  8. |2012-03|Hais|11|
  9. ||Include|21|
  10. ||Mux|6|
  11. ||Scc|7|
  12. ||Spim|2|
  13. ||Spis|1|
  14. ||Top|29|
  15. ||Uart|6|
  16. ||Usb|3|
  17. |2012-04|Hais|2|
  18. ||Top|1|
  19. abc||Efc|4|
  20. ||Mux|1|
  21. ||Efc|12|
  22. lihx||Timer|1|
  23. ||Timer|2|
  24. ||Timer|1|
  25. sueng||Mpu|1|
  26. ||Rcu|1|
  27. ||Mpu|5|
  28. [root@localhost ~]#
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2013-07-11 15:42 |只看该作者
回复 1# bblxl2012
  1. sed -r ':a;N;s/([^|]+\|([^|]+)\|[^\n]+)(.*)\n\|\2(\|.*)/\1\3\n|\4/;ba'
复制代码

论坛徽章:
2
亥猪
日期:2013-12-24 16:24:04狮子座
日期:2014-01-03 14:56:30
4 [报告]
发表于 2013-07-11 15:45 |只看该作者
多谢。
不过,我希望的结果是所有的时间都去掉重复的,只留一个。您的结果把下面的时间全部删除了。谢谢。
比如abc和lihx之间的时间,还有lihx和sueng质检的时间也需要保留。

论坛徽章:
2
亥猪
日期:2013-12-24 16:24:04狮子座
日期:2014-01-03 14:56:30
5 [报告]
发表于 2013-07-11 16:17 |只看该作者
yinyuemi 发表于 2013-07-11 15:42
回复 1# bblxl2012


多谢回复。
但是你的命令有个小问题:
比如我下面还有很多行的时候将只会打印第一个时间,后面的时间都不打印了:
zhangxx|2012-02|Ahb|4|
下面30行2012-02
还有10行2012-03

结果是:zhangxx下面所有的时间只剩下2012-02了

论坛徽章:
2
亥猪
日期:2013-12-24 16:24:04狮子座
日期:2014-01-03 14:56:30
6 [报告]
发表于 2013-07-11 16:24 |只看该作者
也就是说2楼和3楼的兄弟,只能将第一个人test1下面的时间做到重复删除。而abc linhx sueng这3个人下面的时间都没做的不够完美。

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
7 [报告]
发表于 2013-07-11 17:33 |只看该作者
  1. [root@localhost ~]# awk 'BEGIN{FS=OFS="|"}$2==a{$2=""}$2{a=$2}1' i
  2. test1|2012-02|Hais|3|
  3. ||Mux|3|
  4. ||Scc|2|
  5. ||Spim|3|
  6. ||Spis|2|
  7. ||Uart|4|
  8. |2012-03|Hais|11|
  9. ||Include|21|
  10. ||Mux|6|
  11. ||Scc|7|
  12. ||Spim|2|
  13. ||Spis|1|
  14. ||Top|29|
  15. ||Uart|6|
  16. ||Usb|3|
  17. |2012-04|Hais|2|
  18. ||Top|1|
  19. abc|2012-02|Efc|4|
  20. ||Mux|1|
  21. |2012-03|Efc|12|
  22. lihx|2012-02|Timer|1|
  23. |2012-03|Timer|2|
  24. |2012-04|Timer|1|
  25. sueng|2012-02|Mpu|1|
  26. ||Rcu|1|
  27. |2012-03|Mpu|5|
  28. [root@localhost ~]#
复制代码

论坛徽章:
2
亥猪
日期:2013-12-24 16:24:04狮子座
日期:2014-01-03 14:56:30
8 [报告]
发表于 2013-07-11 17:46 |只看该作者
本帖最后由 bblxl2012 于 2013-07-11 17:50 编辑
yestreenstars 发表于 2013-07-11 17:33


非常感谢。继续求教,呵呵。能解释一下命令吗?
下面的文本,使用你的命令打印出来的的结果会导致有些时间丢失。


test1|2012-02|Hais|3|
|2012-02|Mux|3|
|2012-02|Scc|2|
|2012-02|Spim|3|
|2012-02|Spis|2|
|2012-02|Uart|4|
|2012-03|Hais|11|
|2012-03|Include|21|
|2012-03|Mux|6|
|2012-04|Hais|2|
|2012-04|Top|1|
abc|2012-02|Efc|4|
|2012-02|Mux|1|
|2012-03|Efc|12|
|2012-03|Include|21|
|2012-03|Mux|6|
|2012-04|Hais|2|
|2012-04|Top|1|
lihx|2012-02|Timer|1|
|2012-03|Timer|2|
|2012-04|Timer|1|
|2012-04|Include|21|
|2012-04|Mux|6|
|2012-06|Hais|2|
|2012-06|Top|1|
sueng|2012-02|Mpu|1|
|2012-02|Rcu|1|
|2012-03|Mpu|5|
|2012-03|Include|21|
|2012-03|Mux|6|
|2012-04|Hais|2|
|2012-04|Top|1|
zxx|2012-02|Ahb|4|
|2012-02|Apb|3|
|2012-02|Cgu|1|
|2012-02|Core|1|
|2012-02|Crc|1|
|2012-02|Crypt|1|
|2012-02|Dmac|1|
|2012-02|Efc|1|
|2012-02|Eft|1|
|2012-02|Est|1|
|2012-02|Include|1|
|2012-02|Iom|1|
|2012-02|MemBist|1|
|2012-02|MemC|2|
|2012-02|Mesh|1|
|2012-02|Mpu|1|
|2012-02|Mux|1|
|2012-02|Rcu|1|
|2012-02|Rng|1|
|2012-02|Sac|2|
|2012-02|Scc|1|
|2012-02|Scd|1|
|2012-02|Sec|1|
|2012-02|Spim|1|
|2012-02|Spis|1|
|2012-02|Timer|1|
|2012-02|Top|1|
|2012-02|Uart|1|
|2012-02|Usb|2|
|2012-02|Wdt|1|
|2012-03|Apb|1|
|2012-03|Core|1|
|2012-03|Crc|2|
|2012-03|Crypt|1|
|2012-03|MemBist|2|
|2012-03|MemC|1|
|2012-03|Mesh|3|
|2012-03|Rng|2|
|2012-03|Sac|1|
|2012-03|Ucdr|1|

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
9 [报告]
发表于 2013-07-11 17:54 |只看该作者
回复 8# bblxl2012


    **丢失?
  1. [root@localhost ~]# awk 'BEGIN{FS=OFS="|"}$2==a{$2=""}$2{a=$2}1' i
  2. test1|2012-02|Hais|3|
  3. ||Mux|3|
  4. ||Scc|2|
  5. ||Spim|3|
  6. ||Spis|2|
  7. ||Uart|4|
  8. |2012-03|Hais|11|
  9. ||Include|21|
  10. ||Mux|6|
  11. |2012-04|Hais|2|
  12. ||Top|1|
  13. abc|2012-02|Efc|4|
  14. ||Mux|1|
  15. |2012-03|Efc|12|
  16. ||Include|21|
  17. ||Mux|6|
  18. |2012-04|Hais|2|
  19. ||Top|1|
  20. lihx|2012-02|Timer|1|
  21. |2012-03|Timer|2|
  22. |2012-04|Timer|1|
  23. ||Include|21|
  24. ||Mux|6|
  25. |2012-06|Hais|2|
  26. ||Top|1|
  27. sueng|2012-02|Mpu|1|
  28. ||Rcu|1|
  29. |2012-03|Mpu|5|
  30. ||Include|21|
  31. ||Mux|6|
  32. |2012-04|Hais|2|
  33. ||Top|1|
  34. zxx|2012-02|Ahb|4|
  35. ||Apb|3|
  36. ||Cgu|1|
  37. ||Core|1|
  38. ||Crc|1|
  39. ||Crypt|1|
  40. ||Dmac|1|
  41. ||Efc|1|
  42. ||Eft|1|
  43. ||Est|1|
  44. ||Include|1|
  45. ||Iom|1|
  46. ||MemBist|1|
  47. ||MemC|2|
  48. ||Mesh|1|
  49. ||Mpu|1|
  50. ||Mux|1|
  51. ||Rcu|1|
  52. ||Rng|1|
  53. ||Sac|2|
  54. ||Scc|1|
  55. ||Scd|1|
  56. ||Sec|1|
  57. ||Spim|1|
  58. ||Spis|1|
  59. ||Timer|1|
  60. ||Top|1|
  61. ||Uart|1|
  62. ||Usb|2|
  63. ||Wdt|1|
  64. |2012-03|Apb|1|
  65. ||Core|1|
  66. ||Crc|2|
  67. ||Crypt|1|
  68. ||MemBist|2|
  69. ||MemC|1|
  70. ||Mesh|3|
  71. ||Rng|2|
  72. ||Sac|1|
  73. ||Ucdr|1|
  74. [root@localhost ~]#
复制代码

论坛徽章:
2
亥猪
日期:2013-12-24 16:24:04狮子座
日期:2014-01-03 14:56:30
10 [报告]
发表于 2013-07-12 09:28 |只看该作者
本帖最后由 bblxl2012 于 2013-07-12 09:42 编辑

非常感谢,能解释一下吗?

奇怪的结果,你看:
源文件:
zhengxj|2012-02|Ahb|4|
|2012-02|Apb|3|
|2012-02|Wdt|1|
|2012-03|Apb|1|
|2012-03|Ucdr|1|
zhongjs|2012-03|Sac|8|
zhouyl|2012-03|MemC|10|


[root@server ~]# awk 'BEGIN{FS=OFS="|"}$2==a{$2=""}$2{a=$2}1'  file
zhengxj|2012-02|Ahb|4|
||Apb|3|
||Wdt|1|
|2012-03|Apb|1|
||Ucdr|1|
zhongjs||Sac|8|           这里的时间没了
zhouyl||MemC|10|        这里的时间也没了

也就是如果上一个人的时间如果和下面1个人或者几个人的时间是同样的话,那么下面所有人的时间也会被删除掉。

zhengxj最下面的时间是2012-03
zhongjs和zhouyl的时间也是2012-03,那么这2个人的时间也会被删除。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP