[#407882] Ruby extremely slow compared to PHP — Mick Jagger <lists@...>

Hello there, how are you? Hope you are fine. I am a PHP programmer

17 messages 2013/06/02

[#407908] TCPServer/Socket and Marshal problem — Panagiotis Atmatzidis <atma@...>

Hello,

18 messages 2013/06/03

[#407946] Is rubyquiz.com dead? — Alphonse 23 <lists@...>

Thread title says everything.

18 messages 2013/06/04

[#408012] Need help understanding recursion. — pedro oliva <lists@...>

Ive been reading Chris Pine's book 'Learn to Program' and its been going

11 messages 2013/06/06

[#408129] Getting Started With Development — Chamila Wijayarathna <cdwijayarathna@...>

I'm new to Ruby Development. I downloaded source from Github, but couldn't

24 messages 2013/06/11
[#408131] Re: Getting Started With Development — Per-erik Martin <lists@...> 2013/06/11

Ruby is often installed on linux, or can be easily installed with the

[#408146] Re: Getting Started With Development — "Chamila W." <lists@...> 2013/06/11

Per-erik Martin wrote in post #1112021:

[#408149] Re: Getting Started With Development — "Carlo E. Prelz" <fluido@...> 2013/06/11

Subject: Re: Getting Started With Development

[#408198] NokoGiri XML Parser — "Devender P." <lists@...>

Hi,

11 messages 2013/06/13

[#408201] trying to load a .rb file in irb — "Eric D." <lists@...>

I am trying to load a ruby program into irb and it will not load.

12 messages 2013/06/13

[#408205] Can I use Sinatra to render dynamic pages? — Ruby Student <ruby.student@...>

Hell Team,

18 messages 2013/06/13
[#408219] Re: Can I use Sinatra to render dynamic pages? — Nicholas Van Weerdenburg <vanweerd@...> 2013/06/14

You should be able to do this without JavaScript by using streaming.

[#408228] Re: Can I use Sinatra to render dynamic pages? — Ruby Student <ruby.student@...> 2013/06/14

Well, I got some good suggestions from everyone here. I thank you all for

[#408275] Compare and sort one array according to another. — masta Blasta <lists@...>

I have two arrays of objects that look something like this:

14 messages 2013/06/17

[#408276] Comparing objects — "Thom T." <lists@...>

How do I compare two objects in Ruby, considering only attributes

15 messages 2013/06/17

[#408307] getting the most out of Ruby — robin wood <lists@...>

I write a lot of scripts in Ruby, most are small simple things but some

13 messages 2013/06/18

[#408309] Creating ruby script exe — Rochit Sen <lists@...>

Hi All,

17 messages 2013/06/18

[#408357] Beginners problem with database and datamapper — cristian cristian <lists@...>

Hi all!

28 messages 2013/06/20

[#408437] How do I input a variable floating point number into Ruby Programs — "Michael P F." <lists@...>

I want to evaluate the following interactively:

10 messages 2013/06/23

[#408518] #!/usr/bin/env: No such file or directory — Todd Sterben <lists@...>

I am new to both linux and ruby. I am using Ubuntu and Ruby 1.9

17 messages 2013/06/27

[#408528] Designing a Cabinet class — Mike Vezzani <lists@...>

Hello all,

12 messages 2013/06/27

[#408561] Find elment in array of hashes — Rodrigo Lueneberg <lists@...>

array = {:id=>1, :price =>0.25} # index[0]

23 messages 2013/06/28

Re: extract from output (regular expressions)

From: Robert Klemme <shortcutter@...>
Date: 2013-06-12 07:19:54 UTC
List: ruby-talk #408165
On Wed, Jun 12, 2013 at 12:22 AM, Joel Pearson <lists@ruby-forum.com> wrote:

> FYI the reason I'd use a 2D array for that kind of thing is because you
> then have this option for looping through the data:
>
> output.each do |ip, src_packets, src_bytes, dst_packets, dst_bytes|
>   #Whatever you want with each set of data...
> end
>

I'd give even more structure to the data: I use a Hash as element type in
the Array plus I'd use a Hash on root level to distinguish tables.

#!/usr/bin/ruby

$w = true

require 'ipaddr'

data = Hash.new {|h,k| h[k] = []}
current = nil

ARGF.each_line do |line|
  case line
  when /Showing table:\s*(\w+)/
    current = data[$1]
  when /^IP/
    h = {}

    line.scan /(\w+):\s*([\d.]+)/ do |match|
      key = $1.to_sym
      val = $2

      h[key] = case val
        when /\A\d+\z/
        Integer(val)
      when /\A\d{1,3}(?:\.\d{1,3}){3}\z/
        IPAddr.new val
      else
        val
      end
    end

    current << h
  end
end

require 'pp'
pp data


$ ./ip.rb fw.data
{"cowboys"=>
  [{:IP=>#<IPAddr: IPv4:192.168.200.1/255.255.255.255>,
    :packets=>7224498,
    :bytes=>762829278},
   {:IP=>#<IPAddr: IPv4:192.168.200.2/255.255.255.255>,
    :packets=>324472,
    :bytes=>481821874},
   {:IP=>#<IPAddr: IPv4:192.168.200.3/255.255.255.255>,
    :packets=>145748,
    :bytes=>170332152},
   {:IP=>#<IPAddr: IPv4:192.168.200.4/255.255.255.255>,
    :packets=>106100,
    :bytes=>26420351},
   {:IP=>#<IPAddr: IPv4:192.168.200.5/255.255.255.255>,
    :packets=>6948051,
    :bytes=>1798270528},
   {:IP=>#<IPAddr: IPv4:192.168.200.6/255.255.255.255>,
    :packets=>12875,
    :bytes=>18882957},
   {:IP=>#<IPAddr: IPv4:192.168.200.9/255.255.255.255>,
    :packets=>21888,
    :bytes=>5834302},
   {:IP=>#<IPAddr: IPv4:192.168.200.10/255.255.255.255>,
    :packets=>623,
    :bytes=>177505},
   {:IP=>#<IPAddr: IPv4:192.168.200.253/255.255.255.255>,
    :packets=>156,
    :bytes=>12834}],
 "indians"=>
  [{:IP=>#<IPAddr: IPv4:10.0.0.2/255.255.255.255>,
    :packets=>2698261,
    :bytes=>3740346675},
   {:IP=>#<IPAddr: IPv4:10.0.0.3/255.255.255.255>,
    :packets=>300909,
    :bytes=>136230642}]}

In case indentation breaks I put it on github
https://gist.github.com/rklemme/5763405

Kind regards

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread

Prev Next