Extracting specific repeating lines of text after a heading using fgetl and textscan
5 次查看(过去 30 天)
显示 更早的评论
Here is an example of the data I am working with. I would like to extract the line directly following each KEY tag. The files have many thousands of these, so I need to create a loop with textscan or something similar.
> <NAME>
mary
> <AGE>
30
> <KEY>
RDHQFKQIGNG
> <NAME>
john
> <AGE>
56
> <KEY>
JFJNNFNFKFNN
Desired result:
RDHQFKQIGNG
JFJNNFNFKFNN
Here is where I am at (adapted from a similar question in the past), the code does not seem to be moving the cursor, and instead works for the first one, and then grabs all data after it, instead of just the data following the KEY line.
f = fopen('data.txt', 'rt');
tline = fgetl(f);
while isempty(strfind(tline, '> <KEY>'))
if tline == -1
break;
end
line = fgetl(f);
end
if tline ~= -1
data = textscan(f,'%s','Delimiter','\r\n');
else
disp('not found');
end
fclose(f);
Thanks!
0 个评论
采纳的回答
Stephen23
2016-7-19
>> str = fileread('temp1.txt');
>> C = regexp(str,'(?<=> <KEY>\s+)\S+','match')
C =
'RDHQFKQIGNG' 'JFJNNFNFKFNN'
Tested on this file:
3 个评论
Stephen23
2016-7-20
Try this:
E = regexp(str,'^> <KEY>\s+\S+','match','lineanchors');
E = strtrim(strrep(E,'> <KEY>',''));
And have a play with this script:
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Text Files 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!