Ich habe ein paar große Textdateien und in der Datei habe UNIQS.txt
ich eine Liste von Zeichenfolgen grep
aus einer anderen Datei. Der Code, den ich benutze, ist
grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
das macht nichts - die erzeugte datei ist leer. Aber wenn ich es mache
grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
es funktioniert richtig. Das verwirrt mich, weil ich nicht dachte, grep
dass die Einträge UNIQS.txt
als reguläre Ausdrücke ohne Anführungszeichen und Schrägstriche interpretiert werden und so weiter in der Datei (die es nicht gibt). Ist es im Allgemeinen so, dass beim Abrufen von Mustern aus einer Datei automatisch davon ausgegangen wird, dass es sich um reguläre Ausdrücke handelt?
Bearbeiten: In der UNIQS.txt
Datei befinden sich durch Zeilenumbrüche getrennte Zeichenfolgen des Formulars
HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783
(als Vorlagennamen bezeichnet) und die EEP_VSL...
Registerkarte " Datei" getrennte Spalten mit ungefähr 14 Spalten und die erste Spalte ist der Vorlagenname, daher möchte ich im Grunde die Zeile extrahieren, die jeder Vorlage in der Datei entspricht.
-x
-F
Flag nicht übereinstimmen . Vermutlich wird-
in der obigen Beispielzeile dies als Folge von Zeichen gelesen. Würde das nicht auch eckige Klammern erfordern? Ich habe mit einigen Beispieldateien getestet, bin aber noch nicht zu einem Ergebnis gekommen.-F
. Es würde einen Unterschied machen bei Charakteren wie\[*^$
.-F
Flagge?Ich hatte den gleichen Fehler, nicht mit der guten Antwort von @gilles gelöst. Bei genauerem Hinsehen in der Eingabedatei habe ich am Ende zwei Zeilenumbrüche gefunden. Ohne diese wird nur folgender Erfolg benötigt: grep -i file_pattern_input file
(GNU grep 3.1, Eingabedatei mit mehr als 5000 Datensätzen, Matching / Pattern-Datei 2536, ich wusste, dass alle 2536 in der Datei sein müssen. Mit Newlines wurden alle Zeilen der Datei und ohne nur die 2536 Matching-Zeilen)
quelle