I’m relatively new to ruby and to practice I’ve put together the code
below - it’s supposed take two arguments then apply it to a grep command
and display the output. Currently, nothing is outputted to the console.
Anyone see what I’m doing wrong, thanks.
1 #!/usr/bin/ruby
2
3 results = IO.popen(“grep -i #{ARGV[0]} #{ARGV[1]}”, “r”)
4 while output = results.gets
5 puts output
6 end
7 results.close
Dan K. wrote:
I’m relatively new to ruby and to practice I’ve put together the code
below - it’s supposed take two arguments then apply it to a grep command
and display the output. Currently, nothing is outputted to the console.
Anyone see what I’m doing wrong, thanks.
1 #!/usr/bin/ruby
2
3 results = IO.popen(“grep -i #{ARGV[0]} #{ARGV[1]}”, “r”)
4 while output = results.gets
5 puts output
6 end
7 results.close
cmd=“grep -i #{ARGV[0]} #{ARGV[1]}”
puts cmd
results = IO.popen(cmd, “r”)
while output = results.gets
puts output
end
results.close
you should chech ARGV is correct. you can run cmd on console to see
result,cheers!
On 04/12/2010 01:40 AM, Dan K. wrote:
6 end
7 results.close
A few remarks: the block form of IO.popen is more robust because it
ensures proper closing of file handles. Also, using an array as first
argument avoids quoting issues - you need 1.9 for this. Thus you could
do:
IO.popen [“grep”, “-i”, *ARGV[0…1]], “r” do |io|
io.each_line do |line|
puts line
end
end
However, much easier would be to read and grep yourself in Ruby:
rx = Regexp.new(ARGV[0], Regexp::IGNORECASE)
File.foreach ARGV[1] do |line|
puts line if rx =~ line
end
Kind regards
robert