Ich habe eine große Datei mit einer Zeichenfolge in jeder Zeile. Ich möchte schnell feststellen können, ob sich eine Zeichenfolge in der Datei befindet. Idealerweise würde dies unter Verwendung eines binären Chop-Algorithmus erfolgen.
Einige Googler enthüllten den look
Befehl mit dem -b
Flag, das verspricht, alle Zeichenfolgen, die mit einem bestimmten Präfix beginnen, mithilfe eines binären Suchalgorithmus zu lokalisieren und auszugeben. Leider scheint es nicht richtig zu funktionieren und gibt Null-Ergebnisse für Zeichenfolgen zurück, von denen ich weiß, dass sie in der Datei enthalten sind (sie werden von der entsprechenden grep
Suche ordnungsgemäß zurückgegeben ).
Kennt jemand ein anderes Dienstprogramm oder eine andere Strategie, um diese Datei effizient zu durchsuchen?
look -b
fehlgeschlagen für mich mit einem Fehler File too large
. Ich denke, es wird versucht, das Ganze in Erinnerung zu behalten.
look
Befehl korrekt funktioniert, da look das Gebietsschema zu ignorieren scheint und nur C wie das hartcodierte Sortieren verwendet, habe ich auch einen Fehler geöffnet wegen dieses verwirrenden Verhaltens: bugzilla.kernel.org/show_bug.cgi?id=198011