Using textread and strfind to extract lines of data

I have used textread to load a data file into memory. From here, I want to extract specific lines that contain a particular string. I imagine I can do this with strfind, but the documentation indicates it will only return the start index of the string. How can I extract the whole line of data?

1 Comment

You probably used textread to load data into a variable, and if you didn't, then you should do so. Also you should give some more detail: What does your data look like, what do you mean by 'line', is your data separated by line breaks?

Sign in to comment.

 Accepted Answer

This is what I came up with:
fo = fopen('out.dat', 'wt')
t = textread('input.dat', '%s', 'delimiter', '\n', 'bufsize', 1048576);
c = 1;
for z = 1:1:length(t)
s = strfind(t{z}, string)
if ~isempty(s)
fprintf(fo, t{z});
fprintf(fo, '\n');
c = c + 1;
clear s
end
end
fclose(fo);
Seems to work quite well.

1 Comment

There is no need to "clear s". "fprintf(fo, t{z})" will lead to errors, if the string contains a % character. Better:
fprintf(fo, '%s\n', t{z});

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!