¿Cómo puedo abrir un archivo y buscar una palabra dentro usando Ruby?¿Cómo abrir un archivo y buscar una palabra?
Respuesta
File.readlines(file).each {|l| l.grep(/#{exp_search}/).each {|r| puts file + ' : ' + r}}
Algo como esto podría ayudar:
def word_exists_in_file
f = File.open("your_file.txt") #opens the file for reading
f.each do line
print line
if line.match /your_word_to_match/
return true
end
end
false
end
Toda solución que se presenta tienen una complejidad en tiempo de O (n). Para simplificar uso el String#include?
para verificar la palabra. Esto podría hacerse en su lugar con una expresión regular en el formulario string=~ regex
.
Lea el archivo completo y busque en él.
File.read(filename).include?(word)
Si el archivo es muy grande, esto no es una solución óptima, como era de leer el archivo completo en la memoria y empieza a buscar después. Su complejidad memoria es O (n)
Leer el archivo línea por línea y buscar en cada línea
File.open(filename) do |f|
f.any? do |line|
line.include?(word)
end
end
Si el archivo es muy grande, pero ya se sabe sus líneas se upperbounded por un valor constante, se ahora tiene una complejidad de memoria de O (1).
leer fragmentos del archivo y buscar en ella
File.open(filename) do |f|
tmp= f.read(1024)
next true if tmp.include?(word)
until f.eof?
tmp= tmp[(-1*word.size)..-1] + f.read(1024)
next true if tmp.include?(word)
end
next false
end
En esta variante, estamos leyendo trozos equaly tamaño del archivo. Así que no importa cuáles sean las condiciones del archivo son, nuestra complejidad de memoria es O (1)
Guau, gran explicación con mucha más profundidad que la pregunta original. Muchas gracias por el mini tutorial :) –
En la tercera/solución fragmentada, ¿no podría fallar si la palabra que estás buscando abarcó el límite de los 1024 bytes que estás leyendo a la vez? – canhazbits
@canhazbits línea 5 mantiene el final del fragmento anterior para manejar el caso donde la palabra buscada abarca el límite del fragmento. Cuánto se guarda depende del tamaño de la palabra. – johannes
Try joya 'search_in_file', que le ayuda a buscar la palabra de la frase en el archivo especificado o en muchos archivos por ruta
- 1. Ruby - Abrir archivo, buscar y reemplazar varias líneas
- 2. Buscar una palabra en una cadena
- 3. ¿Cómo puedo buscar una palabra en un archivo .docx de Word 2007?
- 4. cómo buscar y resaltar la palabra clave de pdf programmatically
- 5. Buscar sinónimo y raíz de una palabra en java
- 6. ¿Cómo abrir un archivo "nul"?
- 7. Cómo abrir un archivo .a
- 8. Abrir y leer un archivo con askopenfilename
- 9. Abrir una carpeta en el explorador y seleccionar un archivo
- 10. ¿Cómo buscar una palabra en una cadena y resaltar palabra en una vista de texto en Android?
- 11. Buscar una palabra clave dentro de un wiki de GitHub
- 12. ¿Cómo buscar y reemplazar en odt Abrir documento de Office?
- 13. buscar y reemplazar cadena en un archivo
- 14. Al pasar 'abrir' a ShellExecute no se abre un archivo de palabra en una máquina específica
- 15. ¿Cómo buscar toda la cadena para una palabra específica?
- 16. Buscar y reemplazar en un archivo grande
- 17. Cómo abrir un archivo txt y leer números en Java
- 18. Archivo de texto C# buscar palabra específica y eliminar toda la línea de texto que contiene esa palabra
- 19. Cómo abrir un archivo externo desde HTML
- 20. ¿Cómo buscar y analizar un archivo XML con AppleScript?
- 21. ¿Abrir archivo, escribir y guardar?
- 22. ¿Cómo abrir un archivo en la memoria?
- 23. ¿Cómo abrir un archivo .accdb en Ubuntu?
- 24. PHP: Cómo buscar un archivo usando comodines
- 25. abrir archivo con un nombre de archivo unicode?
- 26. ¿Cómo abrir un archivo en una ruta relativa usando T4?
- 27. Cómo abrir un archivo empaquetado con WinRT
- 28. ¿Cómo abrir un archivo usando JavaScript?
- 29. Cómo abrir un archivo desde Memory Stream
- 30. Buscar archivo en Xcode
tienen al menos hiciste una búsqueda? –
@Mitch: No necesita hacer una búsqueda, porque en realidad ha hecho esencialmente la misma pregunta dos veces antes. –
@ Quien votó para cerrar esto: la pregunta puede molestarlo (porque desea que el OP busque o lea un libro o lo que sea), pero es una pregunta de programación clara y real. Vísela si lo desea, pero no veo cómo infringe las pautas de SO para las preguntas. Es específico, al menos un programador seguramente estará interesado y la escritura es clara y simple (dejando de lado la gramática). El requisito 'detallado' es complicado, pero creo que esta pregunta es tan detallada como debe ser: ¿Cómo hago * esta cosa específica * con * este giro *, usando * este lenguaje de programación *? – Telemachus