remove and replace text in a .dat file

27 vues (au cours des 30 derniers jours)
Joshua Ford
Joshua Ford le 17 Oct 2022
Commenté : Jan le 18 Oct 2022
I am trying to find a certain line within a .dat file and replace its contents and save it back to the orignal place within matlab. I have been able to find the character position of the text i wish to replace but do not know how to overwrite a specific location of a .dat file.
I have used fileread to read the file as characters and then replace it but cannot find a way to then save that as a .dat file. Any method will be good thank you. I essentially want to replace a lince of text which is a filepath name (assume you dont konw the lenght or contents of the filepath) with a stated filepath

Réponse acceptée

Jan le 17 Oct 2022
Modifié(e) : Jan le 17 Oct 2022
You cannot replace a line in a text file on the disk directly, because the new text might have another number of characters than the old one.
FileName = 'C:\Your\file.dat';
C = fileread(FileName);
C = strrep(C, oldText, newText);
% Modern Matlab versions (since R2022a):
writelines(C, FileName);
% Old Matlab versions:
[fid, msg] = fopen(FileName, 'w');
assert(fid > 0, msg);
fwrite(fid, C, 'char');
  2 commentaires
Jan le 18 Oct 2022
If your are 100 percent sure, that such a case cannot happen:
100 Number % original line
100000000000 Number % new line
you could overwrite the part without writing the complete file. But if the file is small, this is easier:
FileName = 'C:\Your\file.dat';
C = readlines(FileName);
m = contains(C, 'Number');
C(m) = sprintf("%-10d Number", 100);
writelines(C, FileName);

Connectez-vous pour commenter.

Plus de réponses (0)


En savoir plus sur Standard File Formats dans Help Center et File Exchange




Community Treasure Hunt

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

Start Hunting!

Translated by