如何从 ruby 文件中获取特定数据?我想从这样设置的文件中获取一些 10. ip 地址...
Whatever: xathun
ip_address: 10.2.232.6
etc: aouoeu
more: snthuh
我想将 IP 地址推送到数组中。
我可以从文本中提取 10 个地址。我希望有一种更准确的方法来做到这一点,因为只有在 'ip_address:' 标签之后的数据中,以防有不需要的匹配数据。
如何从 ruby 文件中获取特定数据?我想从这样设置的文件中获取一些 10. ip 地址...
Whatever: xathun
ip_address: 10.2.232.6
etc: aouoeu
more: snthuh
我想将 IP 地址推送到数组中。
我可以从文本中提取 10 个地址。我希望有一种更准确的方法来做到这一点,因为只有在 'ip_address:' 标签之后的数据中,以防有不需要的匹配数据。
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"]
Here's a simple enough solution.
open('<textfile path>') { |f| puts f.grep(/10\./) }
如果文件是这样设置的,你可以这样做:
arr = []
File.open("text").each_line do |line|
parts = line.split(":")
arr << parts[1].strip if parts[0] == "ip_address"
end
一次添加到数组中,一次一行:
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"]