Dado um nome de arquivo no formulário someletters_12345_moreleters.ext
, eu quero extrair os 5 dígitos e colocá-los em uma variável.
Então, para enfatizar o ponto, eu tenho um nome de arquivo com x número de caracteres e depois uma sequência de cinco dígitos rodeada por um único sublinhado em cada lado, depois outro conjunto de x número de caracteres. Eu quero pegar o número de 5 dígitos e colocar isso em uma variável.
Estou muito interessado na quantidade de maneiras diferentes de que isso possa ser feito.
Solução genérica onde o número pode estar em qualquer lugar do nome do arquivo, usando a primeira dessas sequências:
number=$(echo $filename | egrep -o '[[:digit:]]{5}' | head -n1)
Outra solução para extrair exatamente uma parte de uma variável:
number=${filename:offset:length}
Se o seu nome de arquivo sempre tiver o formato dígitos_do_arquivo_...
você pode utilizar awk:
number=$(echo $filename | awk -F _ '{ print $2 }')
Mais uma solução para remover tudo, excepto os dígitos, usar
number=$(echo $filename | tr -cd '[[:digit:]]')