in reply to Re^4: Sorting text files.
in thread Sorting text files.

Cool. (But within the duplicate records no ordering is done. Which might be what the OP wants.)

Replies are listed 'Best First'.
Re^6: Sorting text files.
by Anonymous Monk on Nov 07, 2015 at 00:28 UTC

    Well, the OP didn't ask for that, but if he wants it, (and this is one of the reasons I love perl) it's an easy fix :)

    #!/usr/bin/perl # http://perlmonks.org/?node_id=1147112 use Inline::Files; use strict; use warnings; my %id; $id{ s/;.*//r } .= $_ for sort <FILE1>; print delete @id{ <FILE2> }, values %id; __FILE1__ 1 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2305=27:2307=NAR@4;2306=en +g@106:2308;2309=eng:0:21000:2:2066:0 2 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2315=27:2316=NAR@4;2317=en +g@106:2318;2319=eng:0:21020:2:2066:0 3 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2320=27:2321=NAR@4;2322=en +g@106:2323;2324=eng:0:21030:2:2066:0 ITV HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2305=27:2307=NAR@4;2306= +eng@106:2308;2309=eng:0:21000:2:2066:0 __FILE2__ 3 HD 1 HD 2 HD

    (with another simplification thrown in)

      Nice!
      Ok excuse the stupid question, but perl is new to me.

      I have file names FILE1 and FILE2 I also tried with __FILE1__ as read here (http://search.cpan.org/~ambs/Inline-Files-0.69/lib/Inline/Files.pm)

      But I keep getting errors

      xbmc@bloris:~/vdrchan$ perl sort2.pl

      + Name "main::FILE1" used only once: possible typo at sort2.pl line 9. + + Name "main::FILE2" used only once: possible typo at sort2.pl line 7. + + readline() on unopened filehandle FILE2 at sort2.pl line 7. + + readline() on unopened filehandle FILE1 at sort2.pl line 9.
      These are warnings obviously, but I get no output
      Is vf load failing?
      xbmc@bloris:~/vdrchan/test$ perl + + use Inline::Files; + + Could not vf_load '/home/xbmc/vdrchan/test/-' at /usr/local/share/perl +/5.18.2/Inline/Files.pm line 39. + BEGIN failed--compilation aborted at - line 1. + + xbmc@bloris:~/vdrchan/test$

      cpan[1]> install Inline::Files + + Reading '/home/xbmc/.cpan/Metadata' + + Database was generated on Fri, 06 Nov 2015 19:17:02 GMT + + Inline::Files is up to date (0.69). + + + + cpan[2]>

        The module Inline::Files is just used to make a self-contained program for testing purposes. Use perl's normal open function for actual usage.

        See "perldoc -f open".

        #!/usr/bin/perl # http://perlmonks.org/?node_id=1147112 use strict; use warnings; my %id; open my $fhdata, '<', 'File1' or die "$! opening File1"; open my $fhorder, '<', 'File2' or die "$! opening File2"; $id{ s/;.*//r } .= $_ for sort <$fhdata>; print delete @id{ <$fhorder> }, sort values %id; close $fhdata; close $fhorder;

        Where the file named "File1" contains your first file, and the file named "File2" contains your second file.