Символы печати позади цифр

функция/сценарий, это для аргумента в формате (альфы и цифры) afa5hgt3tt, errerew9ax66w, символы печати позади цифр много раз как значение цифры, например.

hgthgthgthgthgttttttt

axaxaxaxaxaxaxaxaxaxaxwwwwwww... 

Мой сценарий:

#!/bin/bash
func () {
  repeats=$(echo $1 | sed -e 's/\([A-Za-z]*\)\([0-9]*\)\([A-Za-z]*\)\([0-9]*\)\([A-Za-z]*\)/\2/g')
  for (( i = 0; i < $repeats; i++ )); do
    echo $1 | sed -e 's/\([A-Za-z]*\)\([0-9]*\)\([A-Za-z]*\)\([0-9]*\)\([A-Za-z]*\)/\3/g' | tr -d "\n"
  done
  echo -e "\n"
}
func afa5hgt3tt
func errerew9ax66w

Моей функции не удается распечатать последние знаки позади цифры. это - ttttt и wwww.

2
задан 24 June 2015 в 20:45

1 ответ

Используя perl (Спасибо @terdon)

perl -pe 's/(.)(\d+)+/$1 x $2/eg'

Или как функция

func () {
  perl -pe 's/(.)(\d+)+/$1 x $2/eg' <<< "$1"
}
<час>

Пример

% perl -pe 's/(.)(\d+)+/$1 x $2/eg' <<< "afa5hgt66tt"
afaaaaahgtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt

% perl -pe 's/(.)(\d+)+/$1 x $2/eg' <<< "errerew9ax66w"
errerewwwwwwwwwaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw

% perl -pe 's/(.)(\d+)+/$1 x $2/eg' <<< "afa5hgt3tt"   
afaaaaahgttttt
3
ответ дан 2 December 2019 в 02:56

Другие вопросы по тегам:

Похожие вопросы: