Ruby를 사용하여 파일을 열고 그 안에 단어를 검색하려면 어떻게해야합니까? 이 같은파일을 열고 단어를 검색하는 방법은 무엇입니까?
답변
File.readlines(file).each {|l| l.grep(/#{exp_search}/).each {|r| puts file + ' : ' + r}}
뭔가 도움이 될 수 있습니다 :
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
모든 제시된 해결책은 O (N)의 시간 복잡도가 있습니다. 편의상 나는 String#include?
을 사용하여 단어를 확인합니다. 대신 정규식을 string=~ regex
형태로 사용하여이 작업을 수행 할 수 있습니다.
전체 파일을 읽고 검색하십시오.
File.read(filename).include?(word)
파일이 매우 큰 경우 전체 파일을 메모리로 읽어서 나중에 검색하기 때문에 최적의 솔루션이 아닙니다. 메모리의 복잡성은
라인하여 파일 라인을 읽고 각 라인에서 검색 (N) O입니다
File.open(filename) do |f|
f.any? do |line|
line.include?(word)
end
end
파일이 매우 큰, 그러나 당신이 당신의 선이 일정한 값으로 upperbounded 알고 경우, 이제 O (1)의 메모리 복잡성을 갖습니다. 파일의
읽기 청크와는
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
이 변형에서, 우리는 파일에서 equaly 크기의 청크를 읽고에서 검색 할 수 있습니다. 그래서 상관없이 파일의 조건이 무엇인지, 우리의 기억의 복잡성은 O입니다 (1)
원래 질문보다 훨씬 더 깊이있는 와우, 훌륭한 설명. 미니 튜토리얼을 이용해 주셔서 감사합니다 :) –
3 번째/청크 해답으로, 찾고있는 단어가 한 번에 읽는 1024 바이트의 경계를 넘어 서면 실패하지 않을 수 있습니까? – canhazbits
@canhazbits 라인 5는 검색된 단어가 청크 경계에 걸쳐있는 경우를 처리하기 위해 이전 청크의 끝을 유지합니다. 얼마나 유지되는지는 단어 크기에 달려 있습니다. – johannes
시도 보석 'search_in_file', 당신이
- 1. 웹 페이지를 열고 파이썬에서 단어를 검색하는 방법
- 2. 특정 문자열로 끝나는 단어를 검색하는 방법은 무엇입니까?
- 3. cakephp보기에서 파일의 단어를 검색하는 방법은 무엇입니까?
- 4. JAR 파일을 검색하는 방법은 무엇입니까?
- 5. C++에서 docx 파일의 단어를 검색하는 방법은 무엇입니까?
- 6. Regex를 사용하여 여러 단어를 검색하는 방법
- 7. 자바 코딩없이 html 파일에서 단어를 검색하는 방법은 무엇입니까?
- 8. listbox에서 검색하는 방법은 무엇입니까?
- 9. 파이썬으로 txt 파일의 특정 문자를 포함하는 단어를 검색하는 방법은 무엇입니까?
- 10. 여러 테이블에서 단어를 검색하는 방법
- 11. 웹 페이지에서 단어를 검색하는 방법
- 12. Subversion 서버에서 파일을 검색하는 방법은 무엇입니까?
- 13. .NET 어셈블리에서 이진 파일을 검색하는 방법은 무엇입니까?
- 14. .NET 환경에서 SVG 파일을 열고 렌더링하는 방법은 무엇입니까?
- 15. 파일을 열고 행을 읽는 가장 효율적인 방법은 무엇입니까?
- 16. Maven exec : java : resources 디렉토리에서 파일을 열고 읽는 방법은 무엇입니까?
- 17. C++에서 ifstream을 사용하여 파일을 열고 읽는 방법은 무엇입니까?
- 18. fpdf의 PDF 파일을 열고 ist 콘텐츠를 반환합니다.
- 19. TFS 보고서를 열고 편집하는 방법은 무엇입니까?
- 20. 전체 단어를 자르는 방법은 무엇입니까?
- 21. div에 단어를 포함하는 방법은 무엇입니까?
- 22. 텍스트 영역에서 단어를 검색
- 23. 모든 드라이브에서 파일을 검색하는 방법
- 24. gridview.columns 검색하는 방법은 무엇입니까?
- 25. CVS 저장소를 검색하는 방법은 무엇입니까?
- 26. 경로에서 정규식을 검색하는 방법은 무엇입니까?
- 27. 단락의 블록/문자열/단어를 검색하는 자바 정규식
- 28. Ruby에서 웹 페이지를로드하고 단어를 검색하는 방법
- 29. 웹 페이지에서 단어를 검색하는 PHP 스크립트
- 30. 다른 파일의 한 파일에서 단어를 검색하는 Hadoop
은이 경로에 의해 많은 파일이 지정된 파일 또는에서 문구의 단어를 검색하는 데 도움이 적어도 수색을 끝냈습니까? –
@Mitch : 검색을 할 필요가 없습니다. 왜냐하면 그는 이전에 똑같은 질문을 실제로 두번이나했기 때문입니다. –
@ 누가 이것을 끝내기로 결심 했는가 : 질문은 당신에게 귀찮게 할 수 있습니다 (OP가 책을 검색하거나 읽으려는 것이기 때문에). 그러나 그것은 분명하고 실제적인 프로그래밍 질문입니다. 원한다면 투표하십시오.하지만 질문에 대한 SO의 지침을 어떻게 위반하는지 보지 못합니다. 구체적으로 말하자면, 적어도 한 프로그래머는 관심을 가져야하고 글쓰기는 명확하고 간단합니다 (문법을 제쳐두고). '자세한'요구 사항은 까다 롭습니다.하지만이 질문은 다음과 같이 자세하게 설명됩니다. *이 프로그래밍 언어 *를 사용하여 *이 트위스트 *를 사용하여 * 특정 작업을 수행하려면 어떻게해야합니까? – Telemachus