@Porfo

Как удалить по шаблону?

Имеется текст вида

d-auth-service-5f5f466864-bdskb
demodent-api-gateway-677bf48f98-gmn2n
demomed-client-widget-6c58686f69-qvj9g

Нужно удалить постфиксы формата -xxxxxxxxxx-xxxxxx

т.е. чтобы из demomed-analysis-service-6f955bff79-cqjv9 было demomed-analysis-service
Спасибо
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
@FirststepsRu
Может кто-то напишет более красиво, интересно посмотреть.
LIST="d-auth-service-5f5f466864-bdskb demodent-api-gateway-677bf48f98-gmn2n demomed-client-widget-6c58686f69-qvj9g"
for L in $LIST; do
	echo "src: $L"
	OIFS=$IFS; IFS="-"; N=($L); IFS=$OIFS; Z=${N[0]}
	for ((I=1; $I < `expr ${#N[*]} - 2`; I=`expr $I + 1`)); do
		Z=$Z-${N[$I]}
	done
	echo "result: $Z"
done

Результат
src: d-auth-service-5f5f466864-bdskb
result: d-auth-service
src: demodent-api-gateway-677bf48f98-gmn2n
result: demodent-api-gateway
src: demomed-client-widget-6c58686f69-qvj9g
result: demomed-client-widget

Через некоторое время еще пришла мысль:
for L in $LIST; do
      echo "src - $L"
      Z=`echo $L | cut -f1-3 -d'-'`
      echo "result - $Z"
done
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@xibir
echo 'd-auth-service-5f5f466864-bdskb
demodent-api-gateway-677bf48f98-gmn2n
demomed-client-widget-6c58686f69-qvj9g' | sed -r 's/(.+)-[[:alnum:]]{10}-[[:alnum:]]{5}$/\1/'
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
sed -i 's/(.+)-\d{10}-\d{5}$/\1/g' filename
Ответ написан
Lynn
@Lynn
nginx, js, css
Ну раз пошла такая пьянка
LIST="d-auth-service-5f5f466864-bdskb demodent-api-gateway-677bf48f98-gmn2n demomed-client-widget-6c58686f69-qvj9g"
for L in $LIST; do
  echo ${L%-*-*}
done
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы