去除超大文本中的重复行
在非常批处理论坛看到这个题,觉得挺有挑战的,上百万行的数据,光靠批处理应该是难做到了,不知道借助第三方命令行工具能否完成。
文本内有大概100W行的数据
要求一、 删除所有重复行
要求二、 以----为分隔符,将第一列与第二列重复的行删除(描述有问题,以末尾的红色字更新为准)
两个要求完成一个也行,分两个代码完成也行,最完美的是在一个代码中完成两个要求。
部分样本
12779----alibaba140379----222.222.222.222----哈哈哈哈哈哈----2008-5-20----21:24:20
13166----BXGHgxst115----123.112.68.25----欧洲
12779----alibaba140379----203.93.208.138----山东省青岛市网通----2008-5-20----21:24:20
13166----BXGHgxst115----111.111.111.111
12779----alibaba140379----222.222.222.222----哈哈哈哈哈哈----2008-5-20----21:24:20
255004----dsfdsfdsf----123.112.77.25
扩展要求:保持原文本中不重复的行顺序不变
创建 100万 行左右的测试文件代码。
。。。- @echo off&setlocal enabledelayedexpansion
- echo 正在创建测试文件 y1.txt 请稍候。。。 行数为 1000005 行
- (for /l %%a in (1 1 100) do echo !random!----!random!----!random!!random!----!random!)>y1.txt
- (for /l %%a in (1 1 10) do type y1.txt)>y2.txt
- (for /l %%a in (1 1 10) do type y2.txt)>y1.txt
- (for /l %%a in (1 1 10) do type y1.txt)>y2.txt
- (for /l %%a in (1 1 10) do type y2.txt)>y1.txt
- (echo !random!----!random!----!random!!random!----!random!!random!
- echo !random!----!random!----!random!!random!----!random!!random!
- echo !random!----!random!----!random!!random!----!random!!random!
- echo !random!----!random!----!random!!random!----!random!!random!
- echo !random!----!random!----!random!!random!----!random!!random!)>>y1.txt
- del /q y2.txt
复制代码 问题二描述有问题,现更新
要求二、 以----为分隔符,将第一列与第二列重复的行删除,保留第一行。
比如:
1234---555--44444444444
1234---7777--fafjaf
1234---555--444444
334----7898----dfadifaf
1234---555--00000000000000
这种情况下就保留第1、2、4行
因为第1行、第3行、第5行,的第1列和第2列是重复的。
[ 本帖最后由 随风 于 2009-5-29 17:59 编辑 ] |