6

всем хорошего дня

это нубский вопрос, но я нигде не могу найти ответ на этот вопрос. Другие функции, такие как 'cut' или 'awk' или 'sed', всегда упоминаются, но никогда не используют функцию строкового выражения (я думаю, что она вызывается)

string="hi this is a string.and.it has no purpose other than being here"

searchstring="and"

temp=${string#*$searchstring} # this means everything after "and" will be inserted into temp

echo $temp = "hi this is a string."

но скажите, что я хочу все до "и" и используя тот же метод, который я использовал для получения результата переменной temp, поэтому я хочу

echo $temp = ".it has no purpose other than being here"

я пытался

temp=${string%*$searchstring} (as I understand, # is from front and % is back)

но это возвращает только содержимое строки без изменений

Кроме того, справочные страницы, как это называется, эта функция строкового выражения, где я могу найти более подробную информацию?

1 ответ1

10

Вы должны поместить звездочку на другой конец строки. Звездочка остается для "что угодно", поэтому

${string%$searchstring*}

означает "удалить из строки все начиная с строки поиска".

Это задокументировано в man bash разделе "Расширение параметров".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .