Bash заменить содержимое между двумя разделителями - PullRequest
0 голосов
/ 09 июля 2020

У меня есть такая строка:

test=test1&test2=test3&test3

Мой вопрос: как я могу заменить все слова между = и & на Bash?

Таким образом, я могу получить такой вывод:

test=replaced&test2=replaced&test3

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Вы можете использовать bash «расширенный глобус» для чистого bash решения, используя оператор подстановки ($ {var //}.

X='test=replaced&test2=replaced&test3'
shopt -s extglob
echo ${X//=*([!&])&/=replaced&}
0 голосов
/ 09 июля 2020

Используйте sed. Найдите строку, начинающуюся с = и продолжающуюся без амперсандов, замените ее на =replaced.

echo 'test=test1&test2=test3&test3' | sed 's/=[^&]*/=replaced/g'

/g означает глобально, без него, только первое вхождение было бы заменен.

...