Здравствуйте. Имеется текстовый файл с тысячей с лишним строчек вида (улица<пробел>дом-подъезд<табуляция>ip-адрес узла<переход на новую строку>)
Садовая 119-1 xxx.xxx.yyy.yyy
Ленина 113-2 xxx.xxx.yyy.yyy
Ленина 113-6 xxx.xxx.yyy.yyy
Нужно сделать поиск по файлу: я ввожу улицу и номер дома(без подъезда, т.к. узлы сети стоят не в каждом из них), а мне должна вернуться строка целиком (или несколько, по количеству совпадений). Дальше должно быть запоминание соответствующих ip-адресов в переменные и подстановка их в уже написанный скрипт, но это отдельный вопрос.
Сейчас имею такое начало:
#!/usr/bin/ruby
# encoding: utf-8
puts "Что ищем?"
find=gets.chomp
buffer=[]
File.open("/home/hasculdr/Документы/bin/allKom").each { |line|
buffer<<line.split("\n")}
#puts buffer
if buffer.include?(find) then puts "Да"
else puts "Нет"
end
«puts buffer» выводит мне весь текстовый файл (т.е. массив таки создается), но если я начинаю искать внутри переменной по подстрокам - то мне ничего не возвращается - для проверки добавил условие, всегда возвращает «Нет»:
if buffer.include?(find) then puts "Да"
else puts "Нет"
end
Как лучше решить эту задачу - через массив или хеш? Можно ли введенную пользователем часть адреса дома преобразовать в регулярное выражение и выполнять поиск по нему, или регулярки здесь не нужны? Если делать через хеш, то нужно ли редактировать файл с данными до вида
«Садовая 119-1» => «xxx.xxx.yyy.yyy»
«Ленина 113-2» => «xxx.xxx.yyy.yyy»
«Ленина 113-6» => «xxx.xxx.yyy.yyy»
?
ruby