Ответ на первый вопрос:
sed 's/^ *\([^=]*\) *= *\(.*\) *$/\1/'
Ответ на второй вопрос:
sed 's/^ *\([^=]*\) *= *\(.*\) *$/\2/'
Объяснение:
^ *\([^=]*\) *= *\(.*\) *$
соответствует всей линии.Он содержит две группы захвата : первая группа захватывает все до первого =
, за исключением граничных пространств, вторая группа захватывает все после первого =
, за исключением граничных пространств.\1
и \2
являются ссылками на группы захвата.
РЕДАКТИРОВАТЬ Приведенный выше ответ на первый вопрос неверен, так какэто оставляет висячие места.Правильная версия должна выглядеть следующим образом:
sed 's/^ *\([^=]*\) *= *\(.*\) *$/\1/' | sed 's/ *$//'
Кажется, нет способа заставить [^=]*
неохотно, поэтому две команды sed.