Usando expressões regulares para pesquisar uma lista de palavras. Encontrar 2 palavras da letra em vez de 3. Por quê?

0

Estou estudando expressões regulares e estou perplexo. Aqui está o meu processo até agora ...

Eu baixei este arquivo.

wget http://www.mieliestronk.com/corncob_lowercase.txt
mv corncob_lowercase.txt words.txt

Eu queria todas as palavras de 3 letras ...

grep '^...$' words.txt

Isso encontra "abe"

grep '^abe.$' words.txt

Isto NÃO encontra "abe"

grep '^abe$' words.txt

Isso localiza "abe" na biblioteca que acompanha o Arch Linux.

grep '^abe$' /usr/share/dict/cracklib-small

Estou perplexo com isso.

    
por Michael Bruce 23.03.2015 / 23:13

1 resposta

3
$ file corncob_lowercase.txt 
corncob_lowercase.txt: ASCII text, with CRLF line terminators

Provavelmente, os finais de linha do DOS são a fonte do seu problema. CR está contando como personagem para pelo menos alguns propósitos.

Execute-o em dos2unix ou tr -d '\r' antes de grep ing.

    
por 23.03.2015 / 23:19