How do you sort a text file?


#1

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”.


#2

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


#3

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

#4

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


#5

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”. :slight_smile: Any reason why you
don’t
just do
“sort input.txt > output.txt”?

robert

#6

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”. :slight_smile:

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


#7

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

#8

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”. :slight_smile: 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 :slight_smile:

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


#9

http://catsinsinks.com/

~ ryan ~


#10

J. Ryan S. wrote:

http://catsinsinks.com/

Uh, oh, need to upload a picture of our “Tyron in the Sink”. :slight_smile:

robert

#11

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 :slight_smile:

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

Kind regards

robert

#12

Has the venerable tradition of Friday cat blogging made its way into
ruby-talk? :wink:


#13

“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


#14

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


#15

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.