How can MATLAB find and replace a word in a text that contains multiple lines?
4 views (last 30 days)
Show older comments
GEORGIOS BEKAS
on 23 Dec 2017
Answered: Image Analyst
on 23 Dec 2017
E.g. if there is a text file with 57 lines and I want a small change of a word in line 54.
Accepted Answer
Image Analyst
on 23 Dec 2017
You forgot to attach the file. So use fgetl() until you read line 57, then use strrep() on that line.
% Have user browse for a file, from a specified "starting folder."
% For convenience in browsing, set a starting folder from which to browse.
startingFolder = 'C:\Program Files\MATLAB';
if ~exist(startingFolder, 'dir')
% If that folder doesn't exist, just start in the current folder.
startingFolder = pwd;
end
% Get the name of the file that the user wants to use.
defaultFileName = fullfile(startingFolder, '*.*');
[baseFileName, folder] = uigetfile(defaultFileName, 'Select a file');
if baseFileName == 0
% User clicked the Cancel button.
return;
end
fullFileName = fullfile(folder, baseFileName)
% Open the file.
fileID = fopen(fullFileName, 'rt');
% Read the first line of the file.
textLine = fgetl(fileID);
numLinesRead = 1;
while ischar(textLine)
% Read the remaining lines of the file.
fprintf('%s\n', textLine);
% Read the next line.
textLine = fgetl(fileID);
numLinesRead = numLinesRead + 1;
if numLinesRead == 57
% Use strrep() on textLine
changedLine = strrep(textLine, oldText, newText);
% Then do something with changedLine.
end
end
% All done reading all lines, so close the file.
fclose(fileID);
0 Comments
More Answers (0)
See Also
Categories
Find more on Large Files and Big Data in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!