Вам просто нужно немного больше синтаксиса для хранения вывода в массиве
all_values=( $(sed 's/^[^.]*\. //' < input_file) )
Будет проблема, если какая-либо из строк вывода будет содержать пробел: каждый пробел отделился, слово будет элементом отдельного массива. Покажите некоторый демонстрационный вход, если это так.
all_values=()
while read -r line; do
all_values+=( "$line" )
done < <( sed 's/^[^.]*\. //' input_file )
Или, более кратко
mapfile -t all_values < <( sed 's/^[^.]*\. //' input_file )
mapfile
встроенный удар: посмотрите help mapfile
от подсказки удара.
Вам даже не нужен sed для этого. Если бы я читал, то Ваше намерение состоит в том, чтобы удалить первое предложение из каждой строки:
$ cat input_file
Ignore me. keep me
Don't want this. Do want this
$ mapfile -t a < input_file
$ shopt -s extglob
$ a=( "${a[@]#*([^.]). }" )
$ printf "%s\n" "${a[@]}"
keep me
Do want this
Это то, как я прочитал строку за раз из файла
while IFS= read -r DEVICE
do
....
done < your_file