Um código grep não está produzindo os resultados que ele usou antes

0

Um pequeno código grep que costumava usar com muita frequência não está funcionando como antes. Abaixo há um exemplo em que tenho um conjunto de dados com 7 linhas e 3 colunas, o conjunto de dados é chamado animal.txt:

Animal Habitat Family
Bear   forest  Ursidae
Dog    house   Canidae
Cat    house   Fenidae
Wolf   mountain Canidae
Eagle  mountain Accipitridae
Lion   sabana  Fenidae

Eu tenho uma lista com os nomes de 3 animais. O que eu quero é extrair as linhas que contêm esses nomes de animais. A lista é denominada animal3.txt.

Dog
Cat
Bear

O conjunto de dados e a lista são arquivos delimitados por tabulações. O código que estou usando é:

grep -w -F -f ./animal3.txt ./animal.txt > ./output.txt

A saída só tem a linha de Bear que eu procurei em vários fóruns e não encontrei algo similar. Eu realmente não sei o que está acontecendo ou o que estou fazendo errado.

    
por Fersal 17.03.2018 / 01:34

1 resposta

1

Nos comentários, concluo que o arquivo animal3.txt tem retornos de carro no final de pelo menos algumas linhas. Esses caracteres se tornam parte do padrão que o grep está usando, o que faz com que os padrões não correspondam ao arquivo animal.txt .

Se o arquivo não deve ter retornos de carro, você pode usar

tr -d '\r' <animal3.txt >animal3-new.txt

para excluí-los. Você pode então substituir o arquivo animal3.txt original pelo arquivo animal3-new.txt corrigido.

    
por 17.03.2018 / 09:11