конструкция сценария оболочки выстраивает для элементов файла

Fedora пытается иметь в наличии несколько ядер (значением по умолчанию 3), в случае, если некоторая начальная загрузка перестала работать ужасно, и необходимо вернуться к более старому.

2
10.02.2014, 20:38
1 ответ

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

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
4
27.01.2020, 22:00
  • 1
    Спасибо. Да, у меня действительно есть пробелы. Я обновлю вопрос с демонстрационным входом. –  Ramesh 10.02.2014, 20:37
  • 2
    я добавил демонстрационный вход к вопросу. –  Ramesh 10.02.2014, 20:39

Теги

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