有一个较小的网络元素的列表,我试图在stdout中列出。我的小脚本一直工作到regex,在收到提示后,我想搜索它,列出了整个行。
示例:
请进入一个区域
输入:Bei
输出
ipc-br 640-r-br-01
ipc-br 640-r-br-02
ipc-北京640-r-br-03
而不是:
北640-01
北京640-02
北京640-03
另外,如果我在输入中点击"Enter“,它会列出所有的设备。
lines = IO.readlines("/usr/local/bin/braslist.txt")
devices = []
str = File.read('braslist.txt')
while true
print "Please enter a region. If you want to exit enter exit "
input = gets.chomp
exit if input == 'exit'
#Opens file and greps for input
File.open("braslist.txt", "r+") do |f|
f.each do |line|
devices += line.split(" ").grep(/#{input}/i)
input.scan(/^ipc-(?<bng>[a-z]{3}\d{3})-r-br(?<nr>-\d{2})$/).map(&:join)
end
end
puts devices
puts "#{devices.length} network elements found"
end发布于 2015-05-21 14:09:12
您可以尝试循环查看grep的结果如下:
File.open("braslist.txt", "r+") do |f|
f.each do |line|
line.split(" ").grep(/#{input}/i).each do |string|
match = string.match(/^ipc-(?<bng>[a-z]{3}\d{3})-r-br(?<nr>-\d{2})$/)
devices << match[:bng] + match[:nr]
end
end
end(我也认为使用匹配而不是扫描可以使事情变得更清晰)
https://stackoverflow.com/questions/30375503
复制相似问题