В скрипте bash у меня есть следующая переменная:
DATA_SOURCE=1metric2metric3metric
Мне нужно вернуть ее так:
1metric,2metric,3metric
Обратите внимание, что я добавил запятую в конце каждого слова "metri c", кроме последнего. Как я могу это сделать?
Использование perl и отрицательный прогноз (?!$), чтобы не добавлять запятую после завершающего metric:
(?!$)
metric
$ echo $DATA_SOURCE | perl -pe 's/metric(?!$)/$&,/g'
Вывод:
Использование bash расширения параметра:
bash
DATA_SOURCE=1metric2metric3metric DATA_SOURCE=${DATA_SOURCE//metric/metric,} # replace all occurrences of `metric` with `metric,` printf '%s\n' "${DATA_SOURCE%,}" # remove the last character `,` and print the result
проще всего просто удалить последний
echo "DATA_SOURCE=1metric2metric3metric" | sed 's/metric/&,/g;s/,$//'
или
... | sed -E 's/(metric)(.)/\1,\2/g' DATA_SOURCE=1metric,2metric,3metric