como obter o primeiro número de variáveis
Eu tenho uma variável:
STR="My horse weighs 3000 kg but the car weighs more"
STR="Maruska found 000011 mushrooms but only 001 was not with meat"
STR="Yesterday I almost won the lottery 0000020 CZK but in the end it was only 05 CZK"
Preciso obter os números:
3000
11
20
Aqui está uma maneira de fazer isso:
Teste:
fonte
sed
final? Parece que antes de entrar no sed já temos o resultado que queremos.000011
para o qual você precisa remover os zeros à esquerda. Mas você pode simplificar combinando o[1-9][0-9]*
que removeria os zeros à esquerda desde o início:echo $STR | grep -o -E '[1-9][0-9]*'
Se sua implementação de
grep
não possuir-o
ou se você não estiver usando o Bash, faça o seguinte:fonte
fonte
Eu coloquei suas strings em uma matriz para que ele possa ser facilmente iterado nesta demonstração.
Isso usa a correspondência de expressões regulares incorporada do Bash.
Apenas um padrão muito simples é necessário. É recomendável usar uma variável para manter o padrão em vez de incorporá-lo diretamente no teste de correspondência. É essencial para padrões mais complexos.
Incluí os colchetes apenas para definir visualmente os números.
Resultado:
Para obter os números sem os zeros à esquerda, a maneira mais fácil é forçar uma conversão de base 10.
Substituindo isso, a saída se parece com o que você solicitou:
fonte
Procure expressões regulares e
man grep
.e para remover os zeros à esquerda, trate-o como um número:
fonte