Existe uma maneira portátil de extrair parte do texto formatado?

0

Eu tenho um programa (especificamente node --version ) que gera texto no formato v<major>.<minor>.<patch> , onde <major> , <minor> e <patch> são todos números. Eu gostaria de extrair a versão principal desta string de uma maneira portátil que funciona tanto no Linux quanto no OS X. Atualmente, estou usando

grep -oP "(?<=v)(\d+)(?=.\d+.\d+)"

mas parece que isso não funciona no OS X porque usa flags de maneira diferente. Existe uma maneira de fazer isso que funciona em qualquer sistema?

    
por murgatroid99 20.10.2015 / 00:27

2 respostas

2

No bash, você pode usar:

IFS='v.' read -r throwaway major minor patch < <(node --version)

A variável throwaway obtém o espaço em branco antes do v inicial. Não tem uma máquina OS X disponível para teste, mas isso deve ser um bom script bash.

    
por 20.10.2015 / 00:33
0

Inspirado nos comentários de mikeserv, agora estou fazendo isso com o comando

node --version | cut -d. -f1 | cut -c2-

Isso usa o corte com o delimitador . para extrair apenas a string v<major> . Em seguida, ele usa o corte novamente para pegar todos os caracteres, começando com o segundo, o que remove o v .

Isso usa apenas coreutils (além de node ), tornando-o o mais portátil possível.

    
por 20.10.2015 / 02:56