Ho un file di grandi dimensioni contenente una stringa su ogni riga. Vorrei essere in grado di determinare rapidamente se una stringa è nel file. Idealmente, questo dovrebbe essere fatto usando un algoritmo binario di tipo chop.
Alcuni googling hanno rivelato il look
comando con il -b
flag che promette di localizzare e produrre tutte le stringhe che iniziano con un dato prefisso usando un algoritmo di ricerca binaria. Sfortunatamente, non sembra funzionare correttamente e restituisce risultati nulli per le stringhe che so siano nel file (sono correttamente restituite dalla grep
ricerca equivalente ).
Qualcuno conosce un'altra utility o strategia per cercare questo file in modo efficiente?
look -b
fallito per me con un errore File too large
. Penso che stia cercando di leggere tutto in memoria.
look
comando funzioni correttamente, perché look sembra ignorare le impostazioni locali e usa solo C come ordinamento hardcoded, ho anche aperto un bug a causa di questo comportamento confuso: bugzilla.kernel.org/show_bug.cgi?id=198011