Ruby &引用;awk ing/sed ing“;红宝石串
以下是我的Ruby代码:Ruby &引用;awk ing/sed ing“;红宝石串,ruby,string,bash,awk,sed,Ruby,String,Bash,Awk,Sed,以下是我的Ruby代码: #!/usr/bin/env ruby require 'socket' third_way=Socket.ip_address_list.select{|intf| intf.ipv4?} #the above variable is an **array** puts "%s" % ["With Percent S Percent #{third_way}"] puts ["Nothing fancey. Straight puts... #{third_way}
#!/usr/bin/env ruby
require 'socket'
third_way=Socket.ip_address_list.select{|intf| intf.ipv4?}
#the above variable is an **array**
puts "%s" % ["With Percent S Percent #{third_way}"]
puts ["Nothing fancey. Straight puts... #{third_way}"]
third_way.each do |ip|
puts "%s" % ["gsub1 #{ip}"].gsub(/[<>\[\]]/, "")
puts "%s" % ["gsub2 #{ip}"].gsub("<>[]", "")
end
现在回答我的问题。我该如何做我在bash和ruby中所做的事情
我似乎无法在ruby中实现这一点,而在bash中则非常简单 代码:
#!/usr/local/bin/ruby
var = "[#<Addrinfo: 127.0.0.1>, #<Addrinfo: 192.168.0.4>]"
var.split.each do |y|
puts y.gsub(/>|,|\]/, '') unless y =~ /Addr/
end
### Or, you can write above loop in shorthand notation as:
### var.split.each {|y| puts y.gsub(/>|,|\]/, '') unless y =~ /Addr/}
127.0.0.1
192.168.0.4
代码:
#!/usr/local/bin/ruby
var = "[#<Addrinfo: 127.0.0.1>, #<Addrinfo: 192.168.0.4>]"
var.split.each do |y|
puts y.gsub(/>|,|\]/, '') unless y =~ /Addr/
end
### Or, you can write above loop in shorthand notation as:
### var.split.each {|y| puts y.gsub(/>|,|\]/, '') unless y =~ /Addr/}
127.0.0.1
192.168.0.4
我不是ruby方面的专家,但这很有效:
#!/usr/bin/env ruby
str = "[#<Addrinfo: 127.0.0.1>, #<Addrinfo: 192.168.0.4>]"
puts str.scan(/(?<=: )[\d.]+(?=>)/)
我不是ruby方面的专家,但这很有效:
#!/usr/bin/env ruby
str = "[#<Addrinfo: 127.0.0.1>, #<Addrinfo: 192.168.0.4>]"
puts str.scan(/(?<=: )[\d.]+(?=>)/)
这是我的结果代码
#!/usr/bin/env ruby
require 'socket'
puts Socket.ip_address_list.select{|intf| intf.ipv4?}.to_s.scan(/(?<=: )[\d.]+(?=>)/)
#or we can break it up a bit more.
ip_arr = Socket.ip_address_list.select{|intf| intf.ipv4?}
puts ip_arr.to_s.scan(/(?<=: )[\d.]+(?=>)/)
将数组转换为字符串需要to_s
。
转换后,我选择了Tom Fenech的方式,因为它避免了循环。
而awk的声明非常聪明
谢谢大家 下面是我的结果代码
#!/usr/bin/env ruby
require 'socket'
puts Socket.ip_address_list.select{|intf| intf.ipv4?}.to_s.scan(/(?<=: )[\d.]+(?=>)/)
#or we can break it up a bit more.
ip_arr = Socket.ip_address_list.select{|intf| intf.ipv4?}
puts ip_arr.to_s.scan(/(?<=: )[\d.]+(?=>)/)
将数组转换为字符串需要to_s
。
转换后,我选择了Tom Fenech的方式,因为它避免了循环。
而awk的声明非常聪明
谢谢大家 Ruby也可以在bash上做同样的事情:)
#/usr/bin/env bash
$echo“[#,#]”| ruby-ne
“$\.gsub(/\b(?[0-9]{1,3}\){3}[0-9]{1,3}\b/)。每个{x}放置x}”
Ruby也可以在bash上做同样的事情:)
#/usr/bin/env bash
$echo“[#,#]”| ruby-ne
“$\.gsub(/\b(?[0-9]{1,3}\){3}[0-9]{1,3}\b/)。每个{x}放置x}”
在ruby中保持简单:
var = "[#<Addrinfo: 127.0.0.1>, #<Addrinfo: 192.168.0.4>]"
puts var.scan(/\d+\.\d+\.\d+\.\d+/).join("\n")
在ruby中保持简单:
var = "[#<Addrinfo: 127.0.0.1>, #<Addrinfo: 192.168.0.4>]"
puts var.scan(/\d+\.\d+\.\d+\.\d+/).join("\n")
查看您在任何情况下如何获取数据及其确切格式都很有用。查看您在任何情况下如何获取数据及其确切格式都很有用。
#!/usr/bin/env bash
$ echo "[#<Addrinfo: 127.0.0.1>, #<Addrinfo: 192.168.0.4>]" | ruby -ne
'$_.gsub(/\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b/).each{|x| puts x}'
var = "[#<Addrinfo: 127.0.0.1>, #<Addrinfo: 192.168.0.4>]"
puts var.scan(/\d+\.\d+\.\d+\.\d+/).join("\n")
grep -Po '\d+\.\d+\.\d+\.\d+' <<< '[#<Addrinfo: 127.0.0.1>, #<Addrinfo: 192.168.0.4>]'
127.0.0.1
192.168.0.4