for loop on all the lines of text
44 views (last 30 days)
Show older comments
Hello, I have the following script,
%C = readlines('TARGETOLD.txt');
C=readlines('TARGETOLD.txt');
str=char(C);
raw_data = textscan(str,'%[^\n]');
DATA=raw_data{1, 1};
Nrow=numel(DATA);
for i=1:Nrow
idx = find(contains(C,';TIME_ELAPSED:'), 1);
%A=convertStringsToChars(C(1:idx));
%writelines('_modified.txt', A);
fid = fopen('_modified.txt','w');
fprintf(fid,'%s\n',C{1:idx});
D = readlines('HeadScript.txt');
fprintf(fid,'%s\n',D);
%E = readlines('HeadScript.txt');
%fprintf(fid,'%s\n',E);
F = readlines('BottomScript.txt');
fprintf(fid,'%s\n',F);
end
in particular I would like some advice regarding the rows
for i=1:Nrow
idx = find(contains(C,';TIME_ELAPSED:'), 1);
...
end
using idx I go to recognize the string "TIME_ELAPSED" only the first time I encounter it, while I would like to recognize it several times since it appears several times in the text file. as you can see, I thought to insert a for loop on all the number of lines (Nrow) and to make idx depend on the index i, but it doesn't work!
thank you for the advice
0 Comments
Answers (2)
dpb
on 29 Oct 2022
Edited: dpb
on 29 Oct 2022
No loop needed, at least initially...
C=readlines('TARGETOLD.txt');
idx=contains(C,';TIME_ELAPSED:');
E=C(idx);
Now, what do you want/need to do with those records?
More than likely if you would provide a sample of the input data file and explain your overall objective someone can provide a much more elegant solution than reading the file in as the string array...
6 Comments
dpb
on 30 Oct 2022
Edited: dpb
on 31 Oct 2022
fidI=fopen('TARGETOLD.txt'); % Input file
fidO=fopen('_modified.txt','w'); % Output file
fid=fopen('HeadScript.txt'); % header file
HDR=fread(fid,'*char'); % suck up the header
fid=fclose(fid);
fid=fopen('BottomScript.txt'); % ditto for the trailer
TLR=fread(fid,'*char');
fid=fclose(fid);
% now do the work...
while ~feof(fidI)
l=fgets(fidI); % read a line
fwrite(fidO,l); % and put in output
if contains(l,';TIME_ELAPSED:') % the magic phrase
fwrite(fidO,HDR); % add the new stuff
fwrite(fidO,TLR);
end
end
fclose all
clear fid*
0 Comments
See Also
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!