В вашем регулярном выражении есть несколько моментов, которые требуют поправки. Вам нужно отобразить текст после `</span>` и до `<br>`. Давайте рассмотрим, что нужно изменить.
1. Убедитесь, что вы правильно указываете границы, из которых хотите извлекать данные.
2. Должны быть правильные метасимволы для захвата нужного текста.
Вот исправленный вариант вашего кода с объяснениями:
```bash
author_surname=$(echo "$html_page" \
| sed -En 's/.*<span class="post-b">Исполнитель<\/span>: *([^&]*).*$/\1/p'
)
```
### Объяснение регулярного выражения:
- `.*<span class="post-b">Исполнитель<\/span>:` - это часть, которая находит и игнорирует всё до нужного нам текста. Мы ищем совпадение для строки `<span class="post-b">Исполнитель</span>:` и игнорируем все символы до.
- ` *` - это пробелы (пробелы могут быть не только между `:` и текстом).
- `([^&]*)` - эта часть захватывает текст после `:` и до следующего `&` (который начнет следующий HTML тег или элемент). `[^&]*` означает "всё, что не является символом `&`".
- `.*$` - игнорирует всё, что идет после извлекаемого текста.
- `/\1/p` - заменяет найденное полное совпадение на текст, который мы захватили с помощью `([^&]*)`, и выводит его.
Таким образом, этот вариант должен корректно извлечь 'Чувак' из вашей строки. Если остались вопросы или нужны дополнительные примеры, дайте знать!