Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby &引用;awk ing/sed ing“;红宝石串_Ruby_String_Bash_Awk_Sed - Fatal编程技术网

Ruby &引用;awk ing/sed ing“;红宝石串

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}

以下是我的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}"]

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