Это довольно тривиальная проблема, использующая String#split
:
results = open('a.txt').map { |line| line.split(':')[0] }
p results
Выход:
["10.199.198.10", "10.199.198.12", "10.199.198.13"]
String#split
разрывает строку по указанному разделителю и возвращает массив; поэтому line.split(':')[0]
принимает первый элемент этого сгенерированного массива.
В случае, если в нем есть строка без :
, String#split
вернет массив с единственным элементом, который является целой строкой. Так что, если вам нужно сделать немного больше ошибок, вы можете написать что-то вроде этого:
results = []
open('a.txt').each do |line|
results << line.split(':')[0] if line.include? ':'
end
p results
, который добавит разделенные строки в массив результатов, только если в строке есть символ :
.