Espaços condicionais em uma expressão regular?

2

Usando o grep, como eu faria isso em uma linha de comando?

Eu tenho até agora grep '\$[0-9][0-9]\.[0-9][0-9]' money.txt com várias strings no arquivo de texto, mas estou tendo problemas para satisfazer algumas das minhas condições.

Estou tentando procurar por linhas que contenham valores em dólar de US $ 10,00 a US $ 99,99 (cifrão + mantendo dois dígitos após o ponto decimal), e o meu vai pegar tudo, mas isso inclui quando você tem texto antes ou depois isso

por exemplo. abc$15.64 , abc$15.64xyz , $15.64abc

Eu quero que eles sejam pegos somente se houver um espaço antes (por exemplo, fim da linha), depois (início da linha), antes de & depois (meio da linha) ou nenhuma (por exemplo, apenas uma linha na linha).

Eu tentei adicionar \ s, mas ele não imprime nada (mesmo algo válido como abc $15.64 xyz ), embora eles imprimam bem se eu os tornar opcionais (usando *). Então, eu suponho que ignora completamente \ s, já que não parece satisfazer nada.

Observação: eu só quero tornar os espaços opcionais porque preciso que eles também imprimam a linha quando os valores do dólar estiverem no início ou no final da linha; nesse caso, não haverá espaço antes ou depois deles. respectivamente. Mesmo se eu pudesse fazer com que os \ s funcionassem, torná-lo opcional ainda corresponderia a strings como abc$15.64xyz

Alguma idéia de como eu poderia fazer isso funcionar?

Obrigado.

    
por Adam 30.01.2013 / 21:00

2 respostas

1

você simplesmente deve especificar que o regexp comece com o início da linha ou do espaço. E termina com um fim de linha ou espaço. Espero que seja o que você quer.

egrep '(^| )\$[0-9][0-9]\.[0-9][0-9]($| )' money.txt
    
por 30.01.2013 / 21:09
0

Apenas por uma precisão em seu objetivo de reunir apenas o intervalo de US $ 10,00 a US $ 99,99, você gostaria de modificar a resposta perfeita de Sparkie assim:

egrep '(^ |) \ $ [1-9] [0-9]. [0-9] [0-9] ($ |)' money.txt

Obrigado Sparkie pela dica do egrep, nunca entendi como obter uma pesquisa 'grep' ou 'grep', muito legal e adicionada à minha mochila.

    
por 30.01.2013 / 22:05

Tags