Finding Lines in a Large Text File with a Specific Text
이전 댓글 표시
I am trying to read a large text file (>1GB). I only want to read lines that contain a specific text. For example, I want to read every line that contains "<field name="data". Currently I am using fgetl and reading every line, checking if the text is in the line, but it takes too long. Any suggestions?
채택된 답변
추가 답변 (2개)
KSSV
2019년 7월 12일
0 개 추천
Read about textscan. This function gives you option of running a loop and reading required chunks (lines) of the file. In these chunks, you can pick your required line.
Walter Roberson
2019년 7월 12일
If you have enough memory:
S = fileread('YourFileNameHere.txt');
selected = regexp('^.*<fieldname\s*=.*$', 'match', 'dotexceptnewline', 'lineanchors');
And in the case where you do not care what is at the begining or end of line and just want to know what the "data" field content is, then
S = fileread('YourFileNameHere.txt');
datas = regexp('(?<=fieldname\s*=")(?<data>[^"]*)', 'tokens');
That should get you a struct array with field name 'data' that is the content of inside the quotes.
카테고리
도움말 센터 및 File Exchange에서 Low-Level File I/O에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!