Eu tenho alguns arquivos de texto grandes e no arquivo UNIQS.txt
eu tenho uma lista de strings grep
de outro arquivo. O código que eu uso é
grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
que não faz nada - o arquivo gerado está vazio. Mas quando eu faço
grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
funciona corretamente. Isso me confunde porque acho que não grep
interpretaria as entradas UNIQS.txt
como padrões de expressão regular, sem aspas e barras, e assim por diante, no arquivo (o que não existe). É o caso geral de que, se você estiver obtendo os padrões de um arquivo, ele automaticamente pensará que são padrões de expressão regular?
Editar: no UNIQS.txt
arquivo, existem seqüências separadas por nova linha do formulário
HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783
(chamados nomes de modelos) e as EEP_VSL...
colunas separadas pela guia arquivo , com cerca de 14 colunas e a primeira coluna é o nome do modelo, então basicamente quero extrair a linha correspondente a cada modelo no arquivo.
-x
-F
sinalizador. Meu palpite é que-
na linha de amostra acima faz com que isso seja lido como uma sequência de caracteres? Isso não exigiria colchetes também? Eu testei com alguns arquivos de exemplo, mas não cheguei a uma conclusão.-F
. Isso faria diferença com personagens como\[*^$
.-F
bandeira?Eu tive o mesmo erro, não resolvido com a boa resposta do @gilles. Olhando mais de perto no arquivo de entrada, encontrei duas novas linhas no final. Sem isso, o sucesso é necessário apenas: arquivo grep -i file_pattern_input
(GNU grep 3.1, arquivo de entrada com mais de 5000 registros, arquivo de correspondência / padrão 2536, eu sabia que todos os 2536 deveriam estar no arquivo. Com novas linhas, todas as linhas do arquivo e sem apenas as 2536 linhas correspondentes)
fonte