Replace specific line in a text file

42 Ansichten (letzte 30 Tage)
Islam Elnady
Islam Elnady am 24 Okt. 2019
Bearbeitet: Islam Elnady am 26 Okt. 2019
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.

Akzeptierte Antwort

Shubham Gupta
Shubham Gupta am 25 Okt. 2019
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 Kommentare
Islam Elnady
Islam Elnady am 26 Okt. 2019
Bearbeitet: Islam Elnady am 26 Okt. 2019
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 am 26 Okt. 2019
Bearbeitet: Islam Elnady am 26 Okt. 2019
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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by