В bash-скрипте я хотел бы извлечь подстроку формы key=[value]
, чтобы я мог получить value
в переменной, указав соответствующий key
.
Дляэкземпляр, учитывая эту переменную txt
:
txt="something... key=[value] number=[0.42] ...other things... text=[foo] etc"
Я хотел бы извлечь value
для key
, 0.42
для number
, foo
для text
... ипустая строка
для отсутствующих ключей.
Я попробовал эту команду, чтобы извлечь value
:
echo "$txt" | sed 's/^*key=\[[*]\]*/\1/'
Если я правильно понял, команда sed "s/regexp/replacement/"
попытается найти здесьследующее регулярное выражение:
^
начало строки
*
что-нибудь
key=\[
начало того, что я хочу найти
[*^\[]
соответствует чему угодно, кроме символа [
\]
конец того, что я хочу найти
*
что-нибудь
$
конецстроку
и замените ее на то, что было найдено (из-за \1
).
Но я что-то упускаю, так как получаю следующее сообщение об ошибке: sed: -eвыражение № 1,char 27: недопустимая ссылка \ 1 в RHS
команды `s. Я также пытался это сделать, не используя \1
:
echo "$txt" | sed 's/^*key=\[[*]\]*/TEST/'
Но регулярное выражение не соответствовало, и всевозвращается строка txt
...