Как добавить запятую после указанного c слова в bash скрипте? - PullRequest
0 голосов
/ 04 марта 2020

В скрипте bash у меня есть следующая переменная:

DATA_SOURCE=1metric2metric3metric

Мне нужно вернуть ее так:

1metric,2metric,3metric

Обратите внимание, что я добавил запятую в конце каждого слова "metri c", кроме последнего. Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 04 марта 2020

Использование perl и отрицательный прогноз (?!$), чтобы не добавлять запятую после завершающего metric:

$ echo $DATA_SOURCE | perl -pe 's/metric(?!$)/$&,/g'

Вывод:

1metric,2metric,3metric
2 голосов
/ 04 марта 2020

Использование 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
2 голосов
/ 04 марта 2020

проще всего просто удалить последний

echo "DATA_SOURCE=1metric2metric3metric" | sed 's/metric/&,/g;s/,$//'

или

... | sed -E 's/(metric)(.)/\1,\2/g'
DATA_SOURCE=1metric,2metric,3metric
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...