У меня есть многострочная строка, которой я должен выполнить итерации, но я не использую удар. Совет?

Вам просто нужно немного больше синтаксиса для хранения вывода в массиве

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
2
23.04.2015, 03:47
1 ответ

Это то, как я прочитал строку за раз из файла

while IFS= read -r DEVICE
do
    ....
done < your_file
3
27.01.2020, 22:05

Теги

Похожие вопросы