标题:
[文本处理]
批处理怎样把文本文件重组并去重复?
[打印本页]
作者:
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://bbs.bathome.net/)
Powered by Discuz! 7.2