Problema de expressão regular, não encontrando os resultados que estou esperando

1

Estou escrevendo um script para instalar algumas coisas e estou tendo problemas com uma expressão regular que estou usando. Eu tenho o repositório do Wine em minhas fontes apt (ppa: ubuntu-wine / ppa) e estou usando o seguinte comando:

    apt-cache search wine[0-255].[0-255] | sort -nr

Agora eu estava esperando obter 'wine1.7' no topo da lista, mas nem sequer está listado.

Em vez disso, se eu correr:

    apt-cache search wine | sort -nr

Eu obtenho uma lista muito mais longa (obviamente) que contém 'wine1.7'. A lista que falha mostra alguns itens corretos que correspondem ao meu regex, mas não tantos como sem. Estes são alguns exemplos:

  • wine1.7-i386 - Camada de compatibilidade do Microsoft Windows (suporte a 32 bits)
  • wine1.7-amd64 - Camada de compatibilidade do Microsoft Windows (suporte a 64 bits)
  • wine1.5 - Camada de compatibilidade do Microsoft Windows (pacote fictício)
  • wine1.5-i386 - Camada de compatibilidade do Microsoft Windows (suporte a 32 bits)
  • wine1.5-dev - Camada de compatibilidade do Microsoft Windows (suporte a 64 bits)

Como você pode ver, "wine1.5" é uma lista, mas não "wine1.7". Existe uma maneira melhor de obter esse tipo de lista?

Ou melhor ainda, uma maneira simples de encontrar a versão mais recente de uma lista para instalar?

Obrigado Noki

    
por Noki 09.03.2014 / 00:24

1 resposta

2

Não é assim que as classes de caracteres funcionam, a regex não diferencia entre 26 e 2 seguido de 6 , portanto, sua classe de caracteres está sendo interpretada como 1-2 ou 5 . Além disso, o . significa "corresponde a qualquer caractere", não um literal . , eu não acho que o mecanismo apt regex permite escapar, então você teria que usar uma classe de caractere para corresponder ( [.] ). Finalmente, você precisa ter várias ocorrências de cada número, então você precisa de algo como:

apt-cache search --names-only wine[0-9]+[.]*[0-9]*

O --names-only garante que o seu regex corresponda apenas aos nomes dos pacotes agaist, e não às descrições.

    
por terdon 09.03.2014 / 00:37