Grep parece não funcionar corretamente para mim

2

Comando:

LC_ALL=C fgrep -f /root/inputfile.txt *.txt > outputfile.txt

inputfile contém esse tipo de coisa;

-name1:
-name2:
-othername:

*.txt (vários arquivos) contém itens como

-name:email@email:d-o-b::alias

Quando eu grep uma pequena lista de nomes do arquivo de entrada, alguns que existem no *.txt , alguns que não. Eu recebo outros resultados falsos.

000_na_name_000:493982:[email protected]:2000-01-05:XX:X:123.123:alias

Não há absolutamente nada na entrada que deve apresentar esses resultados falsos, e há muitos deles.

    
por don joe 21.08.2014 / 06:41

1 resposta

1

No exemplo da pergunta, parece que deve funcionar, com relação ao uso de fgrep .

O que parece errado é que o grep irá - se um outputfile.txt existir antes - provavelmente irá procurar novamente em sua própria saída, dependendo do tamanho do buffer e dos tamanhos de entrada. Se outputfile.txt não existia antes, parece que *.txt não corresponderá, porque não existe no momento da correspondência.

Realmente não parece o motivo do seu problema, mas vale a pena testar o que acontece quando outputfile.txt é armazenado em outro lugar.


Se não é isso, o que você poderia fazer?
Nos comentários, você mostra um exemplo inputfile.txt que causa o problema.

Eu assumo que o problema é causado por uma ou mais linhas nesse arquivo - quando usado com os mesmos arquivos *.txt .
Para descobrir quais linhas são o problema, você pode fazer uma pesquisa binária para as linhas: Você remove metade das linhas e tenta saber se funciona. Se o problema desaparecer, use as linhas removidas para continuar, caso contrário, as linhas restantes. Agora você repete isso até que você tenha apenas uma ou algumas linhas restantes - e nesse ponto você provavelmente já poderá ver a causa.

    
por 21.08.2014 / 07:35

Tags