Encontre o primeiro número, depois retorne o resto da string

1

Usando o Bash, como posso encontrar o primeiro número em uma string e depois pegar o resto da string?

Por exemplo, eu tenho a seguinte string -

SomeText.MoreText.Whatever.1.2.3.4-branch.ext

E eu quero acabar com isso -

1.2.3.4-branch.ext

Encontrei várias respostas que sugerem como encontrar números (como esta questão ), mas nada que encontra e retorna uma parte de uma string.

    
por David Gard 12.10.2016 / 12:41

2 respostas

2

Com grep , extraindo apenas a parte correspondente ( -o ):

grep -o '[0-9].*'
  • [0-9] corresponderá ao primeiro dígito e .* corresponderá ao restante

Exemplo:

$ grep -o '[0-9].*' <<<'SomeText.MoreText.Whatever.1.2.3.4-branch.ext'
1.2.3.4-branch.ext
    
por 12.10.2016 / 12:48
0

O mais simples e disponível na maioria dos shells POSIX é:

$ var='SomeText.MoreText.Whatever.1.2.3.4-branch.ext'

$ echo "${var#"${var%%[0-9]*}"}"
1.2.3.4-branch.ext

Desta forma, não há necessidade de chamar nenhum utilitário externo (expr, sed, awk, etc) e o gasto de tempo para chamar tal utilitário também é evitado (para strings curtas, como neste caso, para strings longas de k's) a casca é muito lenta).

    
por 12.10.2016 / 14:45