Obtenha todos os caracteres antes da primeira instância de outro caractere

0

Digamos que eu tenha

npmv="3.4.5";

qual é a maneira mais simples de obter todos os caracteres antes do primeiro ponto? Nesse caso, seria "3"?

    
por Alexander Mills 22.06.2018 / 09:32

1 resposta

3
npmv="3.4.5"
major=${npmv%%.*}

printf 'The major version number is %s\n' "$major"

A substituição do parâmetro ${variable%%pattern} removerá a sequência de sufixo maior correspondente a pattern do valor de $variable . O padrão é tratado como um padrão de globalização de nome de arquivo, não uma expressão regular. Esta é uma substituição de parâmetro padrão que funcionará em todos os shells do POSIX.

A mesma coisa, mas com um único % , removeria apenas o .5 final da string no exemplo (o padrão de sufixo de correspondência menor ). Para strings de prefixo, use # em vez de % .

Veja também a seção sobre expansões de parâmetros no padrão POSIX e sua manual do shell.

    
por 22.06.2018 / 09:39