Forum: Ruby How do you sort a text file?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Danny -. (Guest)
on 2006-01-05 23:22
I'm new to Ruby and was wondering how to sort a text file?

With UNIX scripts, I just use "cat input.txt | sort > output.txt".
unknown (Guest)
on 2006-01-05 23:30
(Received via mailing list)
On Fri, 6 Jan 2006, Danny A. wrote:

> I'm new to Ruby and was wondering how to sort a text file?
>
> With UNIX scripts, I just use "cat input.txt | sort > output.txt".


   open("output.txt"){|f| f.write IO::readlines("input.txt").sort}

-a
Ross B. (Guest)
on 2006-01-06 01:58
(Received via mailing list)
On Thu, 05 Jan 2006 21:28:08 -0000, <removed_email_address@domain.invalid> 
wrote:

> On Fri, 6 Jan 2006, Danny A. wrote:
>
>> I'm new to Ruby and was wondering how to sort a text file?
>>
>> With UNIX scripts, I just use "cat input.txt | sort > output.txt".
>
>
>    open("output.txt"){|f| f.write IO::readlines("input.txt").sort}
>
> -a

Alternatively, sticking with the command-line thing, how about:

	cat input.txt | ruby -e 'puts $stdin.sort' > output.txt
William J. (Guest)
on 2006-01-06 10:10
(Received via mailing list)
Danny A. wrote:
> I'm new to Ruby and was wondering how to sort a text file?
>
> With UNIX scripts, I just use "cat input.txt | sort > output.txt".


ruby -e 'puts ARGF.sort' input1.txt input2.txt input3.txt
Robert K. (Guest)
on 2006-01-06 10:49
(Received via mailing list)
Danny A. wrote:
> I'm new to Ruby and was wondering how to sort a text file?
>
> With UNIX scripts, I just use "cat input.txt | sort > output.txt".

You are entitled to the "useless cat award".  :-) Any reason why you
don't
just do
"sort input.txt > output.txt"?

    robert
Hal F. (Guest)
on 2006-01-06 10:55
(Received via mailing list)
Robert K. wrote:
> Danny A. wrote:
>
>>I'm new to Ruby and was wondering how to sort a text file?
>>
>>With UNIX scripts, I just use "cat input.txt | sort > output.txt".
>
>
> You are entitled to the "useless cat award".  :-)

My neighbor's cat won that already.

 > Any reason why you don't
> just do
> "sort input.txt > output.txt"?

Regarding his original question, I think if he has large files to
sort, he might be well off just using the Unix sort utility. If he
has complex logic, of course, he can still control it all in Ruby.

I haven't tested it, but I can't help expecting that on a large
file, system("sort...") would be the efficient way.


Hal
Robert K. (Guest)
on 2006-01-06 12:20
(Received via mailing list)
Hal F. wrote:
> My neighbor's cat won that already.
Oh, on what basis?  Does it catch no mice?

>  > Any reason why you don't
>> just do
>> "sort input.txt > output.txt"?
>
> Regarding his original question, I think if he has large files to
> sort, he might be well off just using the Unix sort utility. If he
> has complex logic, of course, he can still control it all in Ruby.

+1

> I haven't tested it, but I can't help expecting that on a large
> file, system("sort...") would be the efficient way.

+1

    robert
Michal S. (Guest)
on 2006-01-06 14:02
(Received via mailing list)
On 1/6/06, Robert K. <removed_email_address@domain.invalid> wrote:
> Danny A. wrote:
> > I'm new to Ruby and was wondering how to sort a text file?
> >
> > With UNIX scripts, I just use "cat input.txt | sort > output.txt".
>
> You are entitled to the "useless cat award".  :-) Any reason why you don't
> just do
> "sort input.txt > output.txt"?

Well, cat does not write its arguments so you are pretty sure it is
the input argument whatever command you put next in the pipeline.
Plus there was a shell once where input redirection did not work and
one replaced it with cat and |. At least that is how I learned to use
useless cats extensively.
Anyway, cats are nice :)

Thanks

Michal

--
             Support the freedom of music!
Maybe it's a weird genre  ..  but weird is *not* illegal.
Maybe next time they will send a special forces commando
to your picnic .. because they think you are weird.
 www.music-versus-guns.org  http://en.policejnistat.cz
Robert K. (Guest)
on 2006-01-06 15:53
(Received via mailing list)
Michal S. wrote:
> Well, cat does not write its arguments so you are pretty sure it is
> the input argument whatever command you put next in the pipeline.

I'm sorry, what do you mean by that?  Do you mean to say that cat only
reads and so there is no danger of overwriting a file?  Unix command
line
tools that acutally write to a file named on the command line are rather
seldom; there are quite a few that use an option for that.  Never
occurred
to me that this extra level of security was needed.

> Plus there was a shell once where input redirection did not work and
> one replaced it with cat and |. At least that is how I learned to use
> useless cats extensively.

You don't need a shell without redirection - sort sorts the files named
on
its command line.  I doubt it ever behaved differently.

> Anyway, cats are nice :)

Certainly!  See http://www.flickr.com/photos/99776024@N00/sets/1697461/

Kind regards

    robert
J. Ryan S. (Guest)
on 2006-01-06 17:18
(Received via mailing list)
Robert K. (Guest)
on 2006-01-06 18:51
(Received via mailing list)
J. Ryan S. wrote:
> http://catsinsinks.com/

Uh, oh, need to upload a picture of our "Tyron in the Sink". :-)

    robert
Joel VanderWerf (Guest)
on 2006-01-06 19:15
(Received via mailing list)
Has the venerable tradition of Friday cat blogging made its way into
ruby-talk? ;)
Andreas Eder (Guest)
on 2006-01-07 16:23
(Received via mailing list)
>>>>> "Danny" == Danny A. <removed_email_address@domain.invalid> writes:

    Danny> I'm new to Ruby and was wondering how to sort a text file?
    Danny> With UNIX scripts, I just use "cat input.txt | sort >
output.txt".

Why not sort <input.txt >output.txt?
That cat is totally superfluous.

'Andreas
Chad P. (Guest)
on 2006-01-08 01:59
(Received via mailing list)
On Sat, Jan 07, 2006 at 11:23:00PM +0900, Andreas Eder wrote:
> >>>>> "Danny" == Danny A. <removed_email_address@domain.invalid> writes:
>
>     Danny> I'm new to Ruby and was wondering how to sort a text file?
>     Danny> With UNIX scripts, I just use "cat input.txt | sort > output.txt".
>
> Why not sort <input.txt >output.txt?
> That cat is totally superfluous.

You don't need that input redirect.  Input takes a filename as an
argument, so you can simply do this:
  sort input.txt > output.txt

--
Chad P. [ CCD CopyWrite | http://ccd.apotheon.org ]

"Real ugliness is not harsh-looking syntax, but having to
build programs out of the wrong concepts." - Paul Graham
Jim (Guest)
on 2006-01-08 10:11
(Received via mailing list)
Danny A. wrote:
> I'm new to Ruby and was wondering how to sort a text file?
>
> With UNIX scripts, I just use "cat input.txt | sort > output.txt".
>
>
> --
> Posted via http://www.ruby-forum.com/.

Why can't I just let these things go?

i use:

$ sort -o outfile.txt infile.txt

No pipes, and you can use the same file name if you don't want to keep
both files.
This topic is locked and can not be replied to.