500W 文本数据排序去除重复数据
来源:互联网 发布:淘宝bug是什么意思啊 编辑:程序博客网 时间:2024/05/16 15:14
现在又这样一组数据。数量为500W条数据,大小约1G
班级,性别,年龄,........
1,w,15
1,w,13
1,w,20
1,w,11
1,m,15
1,m,13
1,m,14
1,m,17
2,w,18
2,w,13
2,w,14
2,w,12
............
要筛选出每个班级 男生、女生最大年龄的名字。又有一些其他列信息比如地址再次省略。
我使用的方式是先用linux命令sort对文本进行排序。
sort -t, -k1rg -k4rg mid.txt >sort.txt
如果是数值排序很容易出现乱序。大家很容易误使用-n
应该使用sort -g 参数。
对于sort命令使用方法可以参考:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html
然后再用java对大文本进行去除重复数据。
FileRead fileRead = new FileRead("D:\\云转码统计\\成品地址\\sort.txt"); FileWrite fileWrite = new FileWrite("D:\\云转码统计\\成品地址\\url.txt"); String temp = null; int i=0; //只需要取出 k0 ,k1 重复列 的第一行数据 public void readContent() { try { String content = null; while ((content = fileRead.readLine()) != null && content != "") { if (temp == null) { temp = content; fileWrite.write(mediaPath(content)); System.out.println(++i); continue; } String[] tempSplit = temp.split(","); String[] split = content.split(","); if (tempSplit[0].equals(split[0]) && tempSplit[1].equals(split[1])) { continue; } fileWrite.write(mediaPath(content)); System.out.println(++i); temp = content; } } catch (Exception e) { e.printStackTrace(); } }
长选项必须使用的参数对于短选项时也是必需使用的。排序选项: -b, --ignore-leading-blanks 忽略前导的空白区域 -d, --dictionary-order 只考虑空白区域和字母字符 -f, --ignore-case 忽略字母大小写 -g, --general-numeric-sort 按照常规数值排序 -i, --ignore-nonprinting 只排序可打印字符 -M, --month-sort 比较 (未知) < "一月" < ... < "十二月" 在LC_ALL=C 时为(unknown) < `JAN' < ... < `DEC' -h, --human-numeric-sort 使用易读性数字(例如: 2K 1G) -n, --numeric-sort 根据字符串数值比较 -R, --random-sort 根据随机hash 排序 --random-source=文件 从指定文件中获得随机字节 -r, --reverse 逆序输出排序结果 --sort=WORD 按照WORD 指定的格式排序: 一般数字-g,高可读性-h,月份-M,数字-n, 随机-R,版本-V -V, --version-sort 在文本内进行自然版本排序其他选项: --batch-size=NMERGE 一次最多合并NMERGE 个输入;如果输入更多 则使用临时文件 -c, --check, --check=diagnose-first 检查输入是否已排序,若已有序则不进行操作 -C, --check=quiet, --check=silent 类似-c,但不报告第一个无序行 --compress-program=程序 使用指定程序压缩临时文件;使用该程序 的-d 参数解压缩文件 --debug 为用于排序的行添加注释,并将有可能有问题的 用法输出到标准错误输出 --files0-from=文件 从指定文件读取以NUL 终止的名称,如果该文件被 指定为"-"则从标准输入读文件名 -k, --key=位置1[,位置2] 在位置1 开始一个key,在位置2 终止(默认为行尾) 参看POS 语法。 -m, --merge 合并已排序的文件,不再进行排序 -o, --output=文件 将结果写入到文件而非标准输出 -s, --stable 禁用last-resort 比较以稳定比较算法 -S, --buffer-size=大小 指定主内存缓存大小 -t, --field-separator=分隔符 使用指定的分隔符代替非空格到空格的转换 -T, --temporary-directory=目录 使用指定目录而非$TMPDIR 或/tmp 作为 临时目录,可用多个选项指定多个目录 --parallel=N 将同时运行的排序数改变为N -u, --unique 配合-c,严格校验排序;不配合-c,则只输出一次排序结果 -z, --zero-terminated 以0 字节而非新行作为行尾标志 --help 显示此帮助信息并退出 --version 显示版本信息并退出
- 500W 文本数据排序去除重复数据
- ArrayList去除重复数据,排序
- 去除文本中重复的数据行
- 数据去除重复
- list去除重复数据
- 去除重复数据
- list去除重复数据
- 去除重复数据
- DataTable去除重复数据
- 去除字符串重复数据
- 去除字符串重复数据
- 数组去除重复数据
- SQL 去除重复数据
- 单链表中去除重复数据
- List去除重复数据
- 数组去除重复数据
- MySQL去除重复数据
- oracle 去除重复数据
- Vi编辑器的使用方法
- C陷阱与缺陷代码分析之第2章语法陷阱
- Quartz初接触---属于自己的开荒
- jquery mobile 从一个html的page跳转到另一个html的page
- 关于迁移Crystal Reports 2008到Crystal Reports 2011
- 500W 文本数据排序去除重复数据
- 自动跳转
- 杭电1010-Tempter of the Bone
- Qt QTreeWidget 树形结构实现
- paip.按键替换映射总结
- servlet中的service()方法重写与不重写
- Hibernate OneToOne注解配置
- C#程序设计--任何一个自然数m的立方均可写成m个连续奇数之和
- Android broadcastReiver使用 步骤