用软件beyond compare,选择两个文件,然后右击,选择“比较”菜单

解决方案 »

  1.   


    ++1
    这个软件比较专业了,
    再给你说一个UltraEdit32,不过这个可能在处理几十万条的txt上可能会很慢.
      

  2.   

    估计楼主是想自己写一个这样的软件.给你一个思路,就是用空间换时间.以前与XMXOXO及九命猫他们讨论过一次极限的文本处理,速度非常快.其中一个例子,参考:http://topic.csdn.net/u/20080708/15/5C039D93-9EFE-490D-B1C2-7C0F3A508093.html这里有思路.
      

  3.   

    嗯 对 我就是要自己写软件。我想实现 两个手机号码的文本.txt(一行一个号码)进行对比,取出 文本1.txt 中号码在文本2中没有的。每个文本大概有几十万行数据。我想寻求最快的方法.
    列举:
    文本1行数据(1,2,3,4,5)
    文本2行数据(4,5,6,7,8)
    只要文本2中行数据(6,7,8) 
    如果文本1、文本2中有几十万行数据 有没有什么好的办法提取出来
      

  4.   

    楼上的办法我想到了 但是没有好的SQL语句能 快速完成的。几乎都几个小时也没反映
      

  5.   

    不要想复杂了,用数据库吧!用sqlserver.写条高效点的查询语句就OK了。慢不到哪里去。放心
      

  6.   

    不知道各位大大们能处理下面的文本格式不,文本不一定全对齐
    001          346,186              ->         0122       11,41 
    001          347,186              ->         0122       12,42 
    001          348,187              ->         0122       13,43 
    0122       11,42                ->         001        346,187 
    0122      12,43                ->         001          348,188 
    0122       13,44                ->         001          347,187 
    要求能把前面编号读取,两个坐标读取,以及连接的后面的编号,坐标读出来
       而且要求效率   应为想这样的文本还有很长很长,估计在6W行左右
      

  7.   

    给出两个以行为单位文本文件的差集的命令行工具
    http://download.csdn.net/source/922068
      

  8.   

    使用 bitmap 算法是最快的。
      

  9.   

    关于 bitmap 算法,可以参考《编程珠玑》第一章。
      

  10.   

    晕,你这问题怎么还没有解决呢?
    用sql语句很快就搞定了呀。如:create table t1 (a int ) 
    insert into t1 select 1 union select 2 union select 3 
    create table t2 (a int ) 
    insert into t2 select 3 union select 4 union select 5 
    go 
    select * from t1 except  select * from t2 
      

  11.   

    个人感觉 SQL是最好的选择 毕竟是十几万的行呢
      

  12.   

    特在此奉献出对应的C++源代码
    //输出PROG中有但LIST中没有的文本行,即集合PROG-LIST
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <search.h>
    #define MAXLINES 1000000
    #define MAXCHARS 256
    char buf[MAXLINES][MAXCHARS];
    char P[256]="PROG";//程序Program需要的文件列表
    char L[256]="LIST";//dir /b /s生成的实际文件列表List
    FILE *fp,*fl;
    int n,L1;
    int ignore_case=0;
    char ln[MAXCHARS];
    int icompare(const void *arg1,const void *arg2) {
       return stricmp((char *)arg1,(char *)arg2);
    }
    int compare(const void *arg1,const void *arg2) {
       return strcmp((char *)arg1,(char *)arg2);
    }
    void main(int argc,char **argv) {
        if (argc>1) strcpy(P,argv[1]);//命令行参数1覆盖PROG
        if (argc>2) strcpy(L,argv[2]);//命令行参数2覆盖LIST
        if (argc>3) ignore_case=1;//若存在命令行参数3,忽略大小写
        if ((fl=fopen(L,"rt"))==NULL) {
            printf("Can not open %s\n",L);
            return;
        }
        if ((fp=fopen(P,"rt"))==NULL) {
            fclose(fl);
            printf("Can not open %s\n",P);
            return;
        }
        n=0;
        while (1) {
            if (fgets(ln,MAXCHARS,fl)==NULL) break;//
            L1=strlen(ln)-1;
            while (1) {
                if ('\n'==ln[L1]||' '==ln[L1]) {
                    ln[L1]=0;
                    L1--;
                } else break;//
            }
            if (L1>=0) {
                strcpy(buf[n],ln);
                n++;
                if (n>=MAXLINES) {
                    fclose(fl);
                    fclose(fp);
                    printf("%s up to %d lines",L,MAXLINES);
                    return;
                }
            }
        }
        fclose(fl);
        if (ignore_case) qsort(buf,n,MAXCHARS,icompare);
        else qsort(buf,n,MAXCHARS,compare);
        while (1) {
            if (fgets(ln,MAXCHARS,fp)==NULL) break;//
            L1=strlen(ln)-1;
            while (1) {
                if ('\n'==ln[L1]||' '==ln[L1]) {
                    ln[L1]=0;
                    L1--;
                } else break;//
            }
            if (L1>=0) {
                if (ignore_case) {
                    if (NULL==bsearch(ln,buf,n,MAXCHARS,icompare)) printf("%s\n",ln);
                } else {
                    if (NULL==bsearch(ln,buf,n,MAXCHARS,compare)) printf("%s\n",ln);
                }
            }
        }
        fclose(fp);
    }