Как в bash найти строку заканчивающуюся на подстроку и вывести ее?

Eсть строка string="some text remi other text". Нужно извлечь из нее подстроку some text remi. Как это можно сделать?

Я смог только ивлечь "some text " с помощью команды:echo ${string%remi*}


Ответы (2 шт):

Автор решения: Zt.

не совсем понятно сформулированно условие задачи

если я верно понял, то

нужно найти строку в которой присутствует указанная(remi) подстрока, а затем вывести первую половину данной строки, то есть, от начала(^) всей строки до найденной подстроки(remi) включительно.

пример:

строка    -- some text remi other text
подстрока -- remi
результат -- some text remi

для этого достаточно использовать grep

grep -o ".*remi"

пример для одной строки

$ echo "some text remi other text" | grep -o ".*remi"
some text remi

p.s.

ниже в комментариях @ipatev_nn намекнул на то что подстрок в самой строке может быть несколько, по крайней мере это не ограниченно начальными условиями, поэтому для полноты картины попробуем учесть данный вариант. Итак, если подстрок в строке больше чем одна то

учитывать последнее вхождение подстроки в строку

grep -o ".*remi"

учитывать первое вхождение подстроки в строку

grep -oP "^.*?remi"

вариант @ipatev_nn из комментариев ниже

от себя добавлю еще вариант с awk

awk '/remi/{sub(/remi.*/,"remi");print}'
→ Ссылка
Автор решения: Ivan

Преобразуйте строку в массив и выводите что хотите:

$ string="some text remi other text"
$ array=($string)

$ echo ${array[@]:0:3}
some text remi

$ echo ${array[3]} ${array[0]} ${array[2]} ${array[1]}
other some remi text
→ Ссылка