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

一度に1行ずつ、配列に追加します:

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 に答える
0

これは十分に簡単な解決策です。

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 に答える