1

如何从 ruby​​ 文件中获取特定数据?我想从这样设置的文件中获取一些 10. ip 地址...

Whatever:     xathun
ip_address:   10.2.232.6
etc:          aouoeu
more:         snthuh

我想将 IP 地址推送到数组中。

我可以从文本中提取 10 个地址。我希望有一种更准确的方法来做到这一点,因为只有在 'ip_address:' 标签之后的数据中,以防有不需要的匹配数据。

4

4 回答 4

1
s_text = File.open("test.txt",'r').read
ip_addresses = s_text.scan(/\d+.\d+.\d+.\d+/)
puts ip_addresses.inspect #=> ["10.2.232.6"]
于 2013-08-15T22:14:05.323 回答
0

Here's a simple enough solution.

open('<textfile path>') { |f| puts f.grep(/10\./) }
于 2013-08-15T22:04:03.633 回答
0

如果文件是这样设置的,你可以这样做:

arr = []
File.open("text").each_line do |line|
  parts = line.split(":")
  arr << parts[1].strip if parts[0] == "ip_address"
end
于 2013-08-15T22:15:04.040 回答
0

一次添加到数组中,一次一行:

ip_data.txt

Whatever:     xathun
ip_address:   10.2.232.6   
etc:          aouoeu
more:         snthuh

Whatever:     badone
ip_address:   66.8.103.3    
etc:          huh
more:         noooo

Whatever:     blah
ip_address:   10.9.244.13    
etc:          hello
more:         goodbye

代码

found_tens = []
File.open('ip_data.txt') {|f|
  f.each {|line|
    line = line.chomp
    next if line.empty?
    found_tens << $1 if line =~ /^ip_address:\s+(10\.\d+\.\d+\.\d+)/
  }
}
p found_tens  #["10.2.232.6", "10.9.244.13"]
于 2013-08-16T20:59:44.723 回答