解析文件并获取输出

时间:2016-01-10 18:27:04

标签: ruby

我想解析/etc/resolv.conf文件并获取ip地址的输出。我的档案是:

cat /etc/resolv.conf
  # puppet managed
    search eb.com eb.io.com
    nameserver 10.1.21.1
    nameserver 10.1.9.5
    nameserver 10.1.2.29
    nameserver 10.1.5.28

它将输出显示为:

nameserver 10.1.21.1
nameserver 10.1.9.5
nameserver 10.1.2.29
nameserver 10.1.5.28

但我只需要一行中的IP地址。

10.1.21.1 10.1.9.5 10.1.2.29 10.1.5.28

我可以请别人帮助我吗?

1 个答案:

答案 0 :(得分:0)

这段简单的代码应该适合你。

对于文件中的每一行,我们检查是否存在“nameserver”一词后跟一个ip地址。

如果确实如此,我们将该IP地址存储到一个数组中,最后我们打印出由空格连接的所有地址。

ip_addresses = []
File.readlines('/etc/resolv.conf').each do |line|
  match = line.match(/nameserver\W+(\d+\.\d+\.\d+\.\d+)/)
  next unless match
  ip_addresses << match[1]
end

puts ip_addresses.join ' '