Как найти в файле строки по шаблону и занести их в массив?
Как записать в массив строки, найденные в файле по шаблону с помощью grep? Должен быть скрипт на bash. Чтобы можно было обращаться к конкретной строке по индексу.
Ответы (2 шт):
Автор решения: PotroNik
→ Ссылка
#Если нужно что бы массив начинался с 1 и соответствовал номеру выбранной строки, расскоментировать строки ниже
#unset mass
#mass[0]="empty"
#Меняем символ разделителя
IFS=$'\n'
#Выбираем данные в массив, символ + стоит указать при начале нумерации с 1, а не 0.
mass+=( `grep Pattern /file` )
#Возвращаем разделитель по умолчанию
unset IFS
#Возвращаем первую строку
echo ${mass[0]}, где 0 - индекс массива
Автор решения: Fat-Zer
→ Ссылка
Можно наполнять массив:
arr=()
while read s; do
arr+=( "$s" )
done < <(grep pattern /path/to/file)
Основной трюк здесь — перенаправление ввода через подстановку процесса, вместо типовой трубы (grep pattern /path/to/file | while read ...) т.к. в таком случае bash создал бы подоболочку (subshell) для while и все изменения бы пропали, подробности по этому трюку смотри в BashFaq/024.