去掉文本文档中相同的行

praylgjywjy 2010-04-09 10:39:24
文本文档的每一行都是一个字符串,有几万行这样的数据,里面有的行是重复的,请问:如何去掉重复的行?
每一行的格式如下:
2001:5000::2:5,2001:5000:200:a::2
2001:48d0:101:501::5,2001:48d0:101:501::56
2001:48d0:101:501::56,2001:48d0:4000:46::8
2001:48d0:4000:46::8,2001:468:e00:c02::1
2001:468:e00:c02::1,2001:468:e00:402::1
2001:468:e00:402::1,2001:468:e00:801::2
2001:468:e00:801::2,2001:470:0:72::2
2001:470:0:72::2,2001:504:13::11
2001:48d0:101:501::5,2001:48d0:101:501::56
2001:48d0:101:501::56,2001:48d0:4000:46::8
2001:48d0:4000:46::8,2001:468:e00:c02::1
...全文
193 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
纠结的程序猿 2010-04-10
  • 打赏
  • 举报
回复
用PilotEdit,点“排序”按钮,再点按钮“删除重复的行”
http://topic.csdn.net/u/20100405/17/e86b8de1-3e61-4b6c-bb19-bbfe472b5a25.html
linyongzuo 2010-04-09
  • 打赏
  • 举报
回复
#include <set>
praylgjywjy 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 classpatterns 的回复:]
C/C++ code
[/Quote]
有错误啊,'set' was not declared in this scope,你上面的头文件我都加了啊
ShineShineRedStar 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 classpatterns 的回复:]

C/C++ code


#include <fstream>
#include <string>
uisng namespace std;
int main()
{
string date;
set<string> s;
set<string>::iterator iter;

ifstream inf("C:\\1.txt");
while (get……
[/Quote]UP.
dskit 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 praylgjywjy 的回复:]
引用 3 楼 dskit 的回复:
sed -n ’G; /^\(.*\n\).*/d;h;P’ w

这是什么啊,能说的明白点吗?
[/Quote]

sed 一个命令, windows 下用 msys就可以完成这项工作了
十八道胡同 2010-04-09
  • 打赏
  • 举报
回复
1.可以使用set,自己会负责重复的情况

2.可以用哈希表,自己要判重
wangk 2010-04-09
  • 打赏
  • 举报
回复
……

set是什么楼主你都没明白。


for (iter = s.begin(); iter != s.end(); ++iter)
outf << *iter << endl;


这是将set里的所有元素输出到outf。

判断出现相同的值set已经内部实现了,你直接使用即可。
FingerStyle 2010-04-09
  • 打赏
  • 举报
回复
s.insert();

如果相同的就不插入。

所以s 中的东西没有重复的

for (iter = s.begin(); iter != s.end(); ++iter)
就是把s中的东西 写到文件里
praylgjywjy 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 classpatterns 的回复:]
[/Quote]
请问 for (iter = s.begin(); iter != s.end(); ++iter)这句是判断出现相同的行然后就不读是吧?
praylgjywjy 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dskit 的回复:]
sed -n ’G; /^\(.*\n\).*/d;h;P’ w
[/Quote]
这是什么啊,能说的明白点吗?
FingerStyle 2010-04-09
  • 打赏
  • 举报
回复


#include <fstream>
#include <string>
uisng namespace std;
int main()
{
string date;
set<string> s;
set<string>::iterator iter;

ifstream inf("C:\\1.txt");
while (getline(inf, date))
{
s.insert(date);
}
inf.close();

ofstream outf;
outf.open("C:\\2.txt", fstream::out | fstream::app);
for (iter = s.begin(); iter != s.end(); ++iter)
{
outf << *iter << endl;
}
outf.close();
}
dskit 2010-04-09
  • 打赏
  • 举报
回复
sed -n ’G; /^\(.*\n\).*/d;h;P’ w
wangk 2010-04-09
  • 打赏
  • 举报
回复
用哈希表,或者导入到数据库进行查询。
FingerStyle 2010-04-09
  • 打赏
  • 举报
回复
给你给思路

set<string> s;

每次读取一行到string str;

s.insert(str);

然后把s里的string写到另一个文件里
linsen_519 2010-04-09
  • 打赏
  • 举报
回复
sed是 linux中 文本处理的命令 在终端中运行~ 十分强大哦 windows 俺不懂

如果是linux你在终端中打 这个命令:
sed -n'G; s/\n/&&/; /^\([-~]*\n\).*\n\1/d; s/\n//; h; P' 文件名称 >> 将结果导入新文件

这是个正则表达式,由于sed无法改变原文件,所以之能将去重复的东西导入新的文件里

如果你想通过一段code来 去重复的话 那方法太多了 相信你做的到
本软件提供了45大类共几百种针对txt文本文件的全文或者每一的批量处理或者批量替换操作,是您经常性处理文本文件的得力工具。 功能大类列表如下(每一大类又分别包含多项子功能): 1.强大的针对文本文档全文内容的批量字符或内容替换操作功能(跟Word的替换功能一样) 2.针对文本文档内容每一内容的特殊删除、特殊添加、统计分割功能 3.提取文本文档内容的指定的作为文本文件新文件名的功能 4.批量创建文本文档或文件夹 5.批量删除正文特定标记之前的所有内容 6.批量删除文档特定列 7.批量删除每首特定内容 8.批量在每首添加特定内容 9.批量在每添加分隔符 10.将源txt文件的内容对应替换目标txt的内容 11.批量删除成对标记内的内容 12.保留指定范围的文字 13.批量删除A存在于B的内容 14.批量/块替换 15.批量向txt正文插入日期时间文件名 16.批量截取每一的特定区域并删除或替换 17.批量向指定标记之前或者之后添加特定内容 18.批量删除特定信息、删除数字字母文空格回车符等 19.顺序颠倒 20.删除文首/文尾特定内容 21.提取指定标记后面的数字并统一保存 22.批量删除每一指定标记后的所有内容 23.提取关键字所在并保存 24.根据txt内容删除对应文件夹 25.多合并成一 26.将多个文档按列合并 27.在每首添加时间标记 28.不做改动重新保存 29.批量提取电子邮件地址 30.用源文件内容添加到目标来 31.批量递增替换特定内容 32.批量删除文档的日期时间 33.批量提取文本英文单词并分别统计词频数 34.批量去除文本文档的汉字间的空格而同时保留英文间的空格 35.批量下载已知网络地址的文件 36.将AB同时存在的关键词所在的B提取出来 37.2个内容文本文档对比,找出不同处 38.批量内对调 39.删除重复只留一 40.批量文本随机替换 41.批量筛查文本文件含特定内容的文件 42.批量提取文本文件特定内容或数据并保存 43.找出两个txt文档内容相同的部分并提取出来顺序保存 44.批量随机位置随机插入内容 45.剔除列表文件重复数据
本软件提供了45大类共几百种针对txt文本文件的全文或者每一的批量处理或者批量替换操作,是您经常性处理文本文件的得力工具。 功能大类列表如下(每一大类又分别包含多项子功能): 1.强大的针对文本文档全文内容的批量字符或内容替换操作功能(跟Word的替换功能一样) 2.针对文本文档内容每一内容的特殊删除、特殊添加、统计分割功能 3.提取文本文档内容的指定的作为文本文件新文件名的功能 4.批量创建文本文档或文件夹 5.批量删除正文特定标记之前的所有内容 6.批量删除文档特定列 7.批量删除每首特定内容 8.批量在每首添加特定内容 9.批量在每添加分隔符 10.将源txt文件的内容对应替换目标txt的内容 11.批量删除成对标记内的内容 12.保留指定范围的文字 13.批量删除A存在于B的内容 14.批量/块替换 15.批量向txt正文插入日期时间文件名 16.批量截取每一的特定区域并删除或替换 17.批量向指定标记之前或者之后添加特定内容 18.批量删除特定信息、删除数字字母文空格回车符等 19.顺序颠倒 20.删除文首/文尾特定内容 21.提取指定标记后面的数字并统一保存 22.批量删除每一指定标记后的所有内容 23.提取关键字所在并保存 24.根据txt内容删除对应文件夹 25.多合并成一 26.将多个文档按列合并 27.在每首添加时间标记 28.不做改动重新保存 29.批量提取电子邮件地址 30.用源文件内容添加到目标来 31.批量递增替换特定内容 32.批量删除文档的日期时间 33.批量提取文本英文单词并分别统计词频数 34.批量去除文本文档的汉字间的空格而同时保留英文间的空格 35.批量下载已知网络地址的文件 36.将AB同时存在的关键词所在的B提取出来 37.2个内容文本文档对比,找出不同处 38.批量内对调 39.删除重复只留一 40.批量文本随机替换 41.批量筛查文本文件含特定内容的文件 42.批量提取文本文件特定内容或数据并保存 43.找出两个txt文档内容相同的部分并提取出来顺序保存 44.批量随机位置随机插入内容 45.剔除列表文件重复数据 ……………

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧