Исходя из вопроса, похоже, что цель состоит в том, чтобы извлечь строку S, заключенную в начальные и конечные символы '*'.
Несколько проблем с REGEXP: 2 приведет к грамматической ошибке, одну исправимвыходные данные
- Команда 's' всегда принимает 2 параметра: PATTERN (который был предоставлен) и REPLACEMENT, который должен быть здесь «\ 1», поскольку выходные данные должны содержать имя «john»,Пропущенная ЗАМЕНА является источником сообщения об ошибке (не определено 's')
- PATTERN должен заключать в кавычки '('
- * PATTERN должен соответствовать всей строке, добавляя префикс шаблона с'^. ' и добавляя в конец '. $'. Это заменит всю строку на совпавшую строку.
echo '.*john*.' |sed -e 's/^.*\*\(.*\)\*.*$/\1/'