in reply to Re: compare two text files
in thread compare two text files

Hi,thanks for your code. I tested it and it seems that it only works for whole strings. Can it be changed so that it also searches for substrings in the 'general.txt' - file? And since I am a beginner, a few explaining words about your code would be very helpful, thanks! Jurgen

Replies are listed 'Best First'.
Re^3: compare two text files
by prasadbabu (Prior) on Jul 14, 2005 at 05:29 UTC

    You just remove the anchors ^ and $ to match the substrings.

    @result = grep/\Q$a\E/, @sea;

    Prasad

      Hi, I have tried the following code for substring search, but it still only works for full strings:
      open (GEN, "<general.txt") || die ("cannot open general.txt"); open (SEA, "<search.txt") || die ("cannot open search.txt"); undef $/; $gen = <GEN>; $sea = <SEA>; @gen = split /\n/, $gen; @sea = split /\n/, $sea; for $a (@gen) { # no SUBSTRINGS: @result = grep/^\Q$a\E$/, @sea; @result = grep/\Q$a\E/, @sea; push (@final , @result); } print "Search string that matches against general data:\t@final";
      ////////////////////////////////////////////////////////// here is the content of 'general.txt': AT1G01450 AT1G12680 AT1G20650 AT1G30640 AT1G33770 AT1G49580 AT1G50140 ////////////////////////////////////////////////////////// here is the content of 'search.txt': At1g28530 At1g28530 At1g55090 At2g14580 1450 ////////////////////////////////////////////////////////// the program should recognize '1450' as substring of the first line of 'general.txt' and give out the whole first line of 'general.txt', right? Jurgen

        The problem is, you have to include the option modifier 'i' to ignore case. Because in your gen.txt file 'AT' is present and in search file 'at' is present.

        @result = grep/\Q$a\E/i, @sea;

        Now it will work fine.

        Prasad

      that's good code shraddha rusia starletexports