drew wrote:
> Hi people,
>
> I've done a bit of searching through this group, and found some things
> that I thought would help me, but unfortunately they haven't.
>
> I'm just trying to write a short script that will search through web
> server log files and write out lines from the original files that
> contain a certain term to a new file. I did have the "puts" line of my
> code working, but after a few changes that doesn't work either!
>
> What am I doing wrong?? :
>
> There are a bunch of "ex2005##.log" files in the current directory.
>
> --------------------
> #!c:\ruby\bin\ruby
>
> def find_redir
>   found = []
>   Dir['ex*.log'].each do |file|
>     file.each_line do |line|

"file" is a string, the name of a file. It isn't a file handle.
You are not reading from a file.


>       #found.push line if line =~ /redir/
>       found.push line if line["redir"]
>       #puts line if line["redir"]
>     end
>     File.open("found-redir-lines.txt", "w+") do |o|
>       o.write found.join
>     end
>     #p found.join
>   end
> end
>
> def show_500_errors
>   f = File.open("found-redir-lines.txt", "r")
>   f.each do |line|
>     puts line if line["500"]
>   end
> end
>
> find_redir()
> #show_500_errors()
> -------------------
>
> The second function is to go through the new file and find 500 server
> errors, which I guess I could have done in the first function, but not
> to worry.
>
> So why does this produce a create a "found-redir-lines.txt" file, but
> leave it blank ??
>
> Thanks in advance, rubyists
> Drew

ruby -e"ARGF.each_line{|x|puts x if x[/redir/]}" ex*.log >out.txt