Borrar filtros
Borrar filtros

Using textread and strfind to extract lines of data

2 visualizaciones (últimos 30 días)
Paul Huter
Paul Huter el 27 de Nov. de 2012
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 comentario
Jonathan Epperl
Jonathan Epperl el 27 de Nov. de 2012
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?

Iniciar sesión para comentar.

Respuesta aceptada

Paul Huter
Paul Huter el 27 de Nov. de 2012
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 comentario
Jan
Jan el 27 de Nov. de 2012
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});

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by