Ruby在特定标签之后从文件中检索数据

时间:2013-08-15 21:53:43

标签: ruby

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

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

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

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

4 个答案:

答案 0 :(得分: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"]

答案 1 :(得分:0)

这是一个简单的解决方案。

open('<textfile path>') { |f| puts f.grep(/10\./) }

答案 2 :(得分:0)

如果文件设置如此,您可以这样做:

arr = []
File.open("text").each_line do |line|
  parts = line.split(":")
  arr << parts[1].strip if parts[0] == "ip_address"
end

答案 3 :(得分: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"]