Добрый день всем.
У меня задача:
есть входящий файл, состоит из строк подобного рода
host-ivan,10.70.0.1 #Хост Иванова
host-petr,10.70.0.2 #Хост Петрова
host-sid,10.70.0.3 #Хост Сидорова
Задача написать функцию которая будет читать этот файл, заносит в переменную X часть строки до знака 'запятая', а в переменную Y будет заноситься IP адрес из той-же строки. Т.е
x=host-ivan y=10.70.0.1
Пробую сделать через while
while read line
do
x=$(sed -r 's/,.+//') #Вырезаем первую часть строки до запятой
y=$(sed 's|.*,||' | sed -r 's/#.+//') #Вырезаем кусок от запятой до # (IP адрес)
echo "$x$y" \
done <list
При выполнении получаю только результат выполнения
x=$(sed -r 's/,.+//')
строка
y=$(sed 's|.*,||' | sed -r 's/#.+//')
игнорируется, если комментирую Х, то отрабатывает строка с Y
Получается, что первая строка в цикле ВЫРЕЗАЕТ все из строки и для
Y остается пустая строка?
Я не до конца понимаю, что конкретно происходит со значением line на каждом этапе выполнения, кто может подсказать как мне реализовать свою функцию?
Может while не подходит для этого? Или sed?