J'ai quelques gros fichiers texte et dans le fichier, UNIQS.txt
j'ai une liste de chaînes grep
d'un autre fichier. Le code que j'utilise est
grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
qui ne fait rien - le fichier généré est vide. Mais quand je fais
grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
cela fonctionne correctement. Cela me trouble parce que je ne pensais pas que grep
les entrées seraient interprétées UNIQS.txt
comme des modèles d’expression rationnelle sans guillemets ni barres obliques, etc. dans le fichier (ce qui n’existe pas). Est-il généralement vrai que si vous récupérez les patterns à partir d’un fichier, il pensera automatiquement qu’il s’agit de patterns regexp?
Edit: Dans le UNIQS.txt
fichier, il y a des chaînes du formulaire séparées par une nouvelle ligne
HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783
(appelés noms de modèles) et les EEP_VSL...
colonnes séparées par des tabulations de fichier , avec environ 14 colonnes et la première colonne est le nom du modèle, donc je veux fondamentalement extraire la ligne correspondant à chaque modèle dans le fichier.
-x
-F
indicateur. À mon avis, la ligne-
dans l'exemple ci-dessus entraîne-t-elle la lecture d'une séquence de caractères? Cela ne nécessiterait-il pas aussi des crochets? J'ai testé avec quelques exemples de fichiers mais je ne suis pas parvenu à une conclusion.-F
. Cela ferait une différence avec des personnages tels que\[*^$
.-F
drapeau?J'ai eu la même erreur, pas résolu avec la bonne réponse de @gilles. En regardant de plus près dans le fichier d'entrée, j'ai trouvé 2 nouvelles lignes à la fin. Sans ces éléments, le succès n’est nécessaire que: grep -i fichier_pattern_input
(GNU grep 3.1, fichier d’entrée de plus de 5 000 enregistrements, fichier de correspondance / modèle 2536, je savais que tous les 2536 devaient figurer dans le fichier. Avec les nouvelles lignes, toutes les lignes du fichier et sans les 2536 lignes correspondantes)
la source