Como faço uma correspondência de expressão regular em um arquivo?

0

Como faço uma correspondência de expressão regular em um arquivo e envio o resultado.

Por exemplo, encontre version="X.Y.Z" e armazene em uma variável o resultado correspondente de X.Y.Z para posteriormente poder ecoar a correspondência.

O que eu ganhei sozinho:     sed -n -e 's / version \ = \ ". * \"' $ PATH "version.js"

Meu conteúdo de arquivo é:

var config;
function check() {
    if (window.environment && window.revision) {
        config.version = "0.0.1";
        config.isApp = true;
    }
    else {
        setTimeout(check);
    }
}
check();

e desejo armazenar 0.0.1 em uma variável como desejo inserir este valor em outro arquivo.

    
por Baz 08.12.2016 / 09:31

1 resposta

1

Isso deve estar funcionando no seu caso:

cat /path/to/version.js | grep config.version | grep -P -o '\d\.\d\.\d'

Se o seu número for de dois dígitos (ou mais), você precisa adicionar um + ao \ d correspondente ao número.

Como '\d\.\d\.\d' corresponde a 1.1.1, 1.1.2, 2.2.9 etc., ele não corresponderia a 1.10.2 , então a regex precisaria ser modificada para '\d\.\d+\.\d' .

Você pode seguir a rota "easy / safe" e colocar '\d+\.\d+\.\d+' .

A saída do primeiro seria apenas o número da sua versão, que poderia ser definida para uma variável depois.

Como edição do seu comentário: Isso funciona corretamente para mim. Eu criei um arquivo com suas entradas dadas, usando isso com o meu comando produz isso:

Usandoissoparadefinirumavariávelcomotal,oecotambémfunciona:

    
por 08.12.2016 / 10:22

Tags