grep -f com falha em um arquivo editado no Windows

1

Eu só quero compartilhar um problema que tive esta manhã usando o grep -f para obter os padrões correspondentes a partir de um arquivo de texto.

Sintoma

$ echo 'sandbox/test/script.py' | grep -G '^sandbox/'
sandbox/test/script.py

Usando a opção -f falha:

$ echo 'sandbox/test/script.py' | grep -G -f patterns.txt
$ cat patterns.txt
^sandbox/

Eu não entendi porque o grep estava falhando até inspecionar o arquivo de texto:

$ file patterns.txt
/home/miguel/patterns.txt: ASCII text, with CRLF line terminators

Este arquivo estava sendo usado por diferentes colegas em diferentes sistemas operacionais, e alguém o salvou usando os terminadores de linha do Windows.

    
por Miguel Rentes 28.12.2015 / 15:26

1 resposta

3

Solução

O uso do dos2unix resolveu o problema.

$ dos2unix patterns.txt
dos2unix: converting file /home/miguel/patterns.txt to Unix format ...
$ file patterns.txt
/home/miguel/patterns.txt: ASCII text

E agora o grep -f funciona novamente.

$ echo 'sandbox/test/script.py' | grep -G -f patterns.txt
sandbox/test/script.py

Espero que esta solução ajude alguém com o mesmo problema.

    
por 28.12.2015 / 15:26