Board logo

标题: [文本处理] 批处理怎样把文本文件重组并去重复? [打印本页]

作者: necnec1    时间: 2015-4-22 10:49     标题: 批处理怎样把文本文件重组并去重复?

BCKL2014-C11 BBHN710AD@F4BD000283_ABCDE1410310054000@519414 20180 T 6 2 116 12 6 2 2 B L 524 597 27.0

REAL2015-133 CCTE -CE-Y-P CBD5032.41@C4JD000041_ABCDE1403010010000@13123097 0.75 1580 1785 290 4815 2 0 23 22 5 51 197 318 38 2.02 0.21 OK 112 56 56

JDN2C-TT-B CR4@M4EC006609_ABCDE1407060007300@14201432 0.615 880 CTYL 8460 11 140 8 80 33 152 292 47 2.76 0.56 OK 144.0 71.0 73.0

E4T0000613_CSSAT1411130011600@14210519 0.75 1420 COIL 2190 2 4 14 15 7 38 165 309 44 66 33 33 FGCG+TT

E4T0000613_CSSAT1412240032800@14210519 0.95 1520 COIL 2150 2 4 14 15 7 38 267 319 45 66 33 43 FGCG+TT



前三组都有2个@  表示数据完整不要动他   最后2组只有一个@   
需要把FECG+TT 剪切到数据的最前面 加上@  数据就完整了  最后的效果如下

FGCG+TT@E4T0000613_CSSAT1411130011600@14210519 0.75 1420 COIL 2190 2 4 14 15 7 38 165 309 44 66 33 33

FECG+TT@E4T0000613_CSSAT1412240032800@14210519 0.95 1520 COIL 2150 2 4 14 15 7 38 267 319 45 66 33 43


然后对上面五组数据做重复就删除的操作  还是用最后2组来举例说明
  
FGCG+TT      E4T0000613_CSSAT1411130011600      14210519           0.75 1420 COIL 2190 2 4 14 15 7 38 165 309 44 66 33 33
FECG+TT      E4T0000613_CSSAT1412240032800      14210519           0.95 1520 COIL 2150 2 4 14 15 7 38 267 319 45 66 33 43
重要1                     重要2                                                    重要3                                                             无关紧要



重要1和重要3做比较  出现重复的  只保留一行   很明显 FECG+TT和14210519  两组数据都出现了 所以只保留一行就可以了  最后的结果是

FGCG+TT      E4T0000613_CSSAT1411130011600      14210519           0.75 1420 COIL 2190 2 4 14 15 7 38 165 309 44 66 33 33



文本大概有200多万行  300多M   希望大神能用最快速的办法帮忙解决一下 谢谢
作者: necnec1    时间: 2015-4-22 18:09

第一个问题  我没看太懂 我就举例来说吧

FECG+TT@E4T0000613_CSSAT1412240032800@14210519 0.95 1520 COIL 2150 2 4 14 15 7 38 267 319 45 66 33 43
第一个@左边和右边界限很清晰 需要完全匹配 就第二个@ 紧跟着14210519  重点就是14210519  他后面就是空格  从这个空格一直到最后 都是不重要的数据  不参与匹配  无所谓的

第二个问题  保留哪一行无所谓的   重点是删除重复的    有些数据甚至有几千个重复   只保留一个就行了
关键点在于  我还是举个例子给你看吧

FGCG+TT      E4T0000613_CSSAT1411130011600      14210519           0.75 1420 COIL 2190 2 4 14 15 7 38 165 309 44 66 33 33
ECBDGAG      E4T0000613_CSSAT1412240032800      14210519           0.95 1520 COIL 2150 2 4 14 15 7 38 267 319 45 66 33 43

这两组数据 14210519同时存在  但是前面是FGCG+TT和ECBDGAG    我想让他们俩放在一起
我主要是想通过比较14210519 看FGCG+TT和ECBDGAG之间的区别  如果数据不在一起 我又得一个个去查  
就这些 呵呵
作者: necnec1    时间: 2015-4-22 19:00

这么说吧   举例5行数据

BCKL2014-C11 BBHN710AD@F4BD000283_ABCDE1410310054000@519414 20180 T 6 2 116 12 6 2 2 B L 524 597 27.0

REAL2015-133 CCTE -CE-Y-P CBD5032.41@C4JD000041_ABCDE1403010010000@13123097 0.75 1580 1785 290 4815 2 0 23 22 5 51 197 318 38 2.02 0.21 OK 112 56 56

JDN2C-TT-B CR4@M4EC006609_ABCDE1407060007300@14201432 0.615 880 CTYL 8460 11 140 8 80 33 152 292 47 2.76 0.56 OK 144.0 71.0 73.0

E4T0000613_CSSAT1411130011600@14210519 0.75 1420 COIL 2190 2 4 14 15 7 38 165 309 44 66 33 33 FGCG+TT

E4T0000613_CSSAT1412240032800@14210519 0.95 1520 COIL 2150 2 4 14 15 7 38 267 319 45 66 33 43 FGCG+TT

前面3组  包含2个@  就说明数据是完整的 不需要做任何操作
但是最后2组  只有1个@  说明数据不完整  需要把行尾的部分截取到行首   使数据变的完整
作者: necnec1    时间: 2015-4-22 19:03

关于第二个问题   数据有200万行   重复的情况会很严重  并且他们不在一块  这种查找很折磨人  我希望一次性完成 这样查询数据 上下一对应就一目了然  方便查看而已
作者: necnec1    时间: 2015-4-22 19:36

嗯 这个可以的
作者: yangfengoo    时间: 2015-4-23 10:20

数据过大建议第三方命令,另外最好有数据部分样本




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2