Hi everyone,
I have a text file (for example: data.dat) as shown below, with a number of lines.
data.dat
@motion parameters
speed= 22,30,60
range= 600
rotation= 50
@controls
act= 2,3,4,5
I want to read it and replace the line that comes right after the line starting with a specfic keyword e.g. "@controls" . In this case, the line to be replaced is this one
act= 2,3,4,5
and it should be changed in a loop. For an instant, for example, it would change to:
act= 1,0,8,-2
I'd appreciate your help. Thanks in advance.

 채택된 답변

Shubham Gupta
Shubham Gupta 2019년 10월 25일

1 개 추천

One of the way could be:
fid = fopen('data.dat','r'); % Open File to read
replaceline = 'act= 1,0,8,-2'; % Line to replace
i = 1;
tline = 's';
A = {[]};
while ischar(tline)
tline = fgetl(fid);
if ~isempty(strfind(tline,'@controls')) % find '@controls'
A{i}=tline;
A{i+1} = replaceline; % replace line
tline = fgetl(fid);
i = i+1;
else
A{i}=tline;
end
i = i+1;
end
fclose(fid);
fid2=fopen('data.dat','w'); % Open file to write
for i=1:length(A)-1
fprintf(fid2,['%s',char([13,10])],A{i});
end
fclose(fid2);
Let me know if you have doubts !

댓글 수: 2

Islam Elnady
Islam Elnady 2019년 10월 26일
편집: Islam Elnady 2019년 10월 26일
Thank you for help. It worked perfect. But when I changed
A{i+1} = replaceline;
to
A{i} = replaceline;
So that I could replace the same line. If there is a line below the repleaced one, it'll be deleted and replaced with a blank line. What edits should be made to fix this?
Islam Elnady
Islam Elnady 2019년 10월 26일
편집: Islam Elnady 2019년 10월 26일
while ischar(tline)
tline = fgetl(fid);
if ~isempty(strfind(tline,'@controls')) % find '@controls'
A{i}=tline;
A{i} = replaceline; % replace line
% tline = fgetl(fid);
% i = i+1;
else
A{i}=tline;
end
i = i+1;
end
I figured it out. This will replace the same line that contains the pattern. Thank you again!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터 및 File Exchange에서 Large Files and Big Data에 대해 자세히 알아보기

제품

릴리스

R2019b

질문:

2019년 10월 24일

편집:

2019년 10월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by