Ich versuche zgrep -f zu verwenden, um für jede Zeile einer Abfragedatei nur die erste Übereinstimmung in einer einzelnen zu suchenden Datei zu finden. Da die zu durchsuchende Datei sehr groß ist (~ 3 GB), ist es wichtig, dass zgrep eine Suche nach einer Übereinstimmung für eine aktuelle Abfragezeile findet und dann nach dem Muster in der nächsten Zeile der Abfragedatei sucht. Mein Problem ist, dass "zgrep -m 1 -f" nur die erste Übereinstimmung für die erste Abfragezeile der Abfragedatei findet; dann hört es auf, die Abfragedatei vollständig zu lesen. Gibt es eine andere Möglichkeit, die Optionen -m und -f (z) grep zu kombinieren, um diese Suche effizienter durchzuführen?zgrep erste Übereinstimmung für jede Zeile in einer Datei
Hier sind zwei Linien von meiner 1000-line-Abfrage-Datei-Struktur (wordList.txt): (?)
^dog
^cat
Und drei Linien von meiner 3-Millionen-line zu-gesucht-Datei (Googlenews -Vektoren-negative300.txt.gz)
dog 0.017198 -0.007493 -0.057982 0.054051 -0.028336
accordion 0.012590 -0.003692 -0.014291 0.057166 -0.025180
cat 0.004059 0.067190 -0.093874 0.071370 0.038900
Und leider diesen Befehl aus:
% zgrep -m 1 -f wordList.txt GoogleNews-vectors-negative300.txt.gz > myVectors.txt
gibt nur die f rste Spiel für die erste Abfrage:
dog 0.017198 -0.007493 -0.057982 0.054051 -0.028336
Während dieses Befehls (ohne die „-m 1“):
% zgrep -f wordList.txt GoogleNews-vectors-negative300.txt.gz > myVectors.txt
Gibt den vollständigen erwarteten Ausgang, sondern nimmt unendlich länger, weil es die gesamte Datei sucht jedes Mal:
dog 0.017198 -0.007493 -0.057982 0.054051 -0.028336
cat 0.004059 0.067190 -0.093874 0.071370 0.038900