remove and replace text in a .dat file

조회 수: 8 (최근 30일)
Joshua Ford
Joshua Ford 2022년 10월 17일
댓글: Jan 2022년 10월 18일
Hi,
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

채택된 답변

Jan
Jan 2022년 10월 17일
편집: Jan 2022년 10월 17일
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');
fclose(fid);
  댓글 수: 2
Joshua Ford
Joshua Ford 2022년 10월 18일
Hi thanks for this. It worked really well.
I have a similar instance where I want to change a numerical value within a text file automatically. For instance the structure is:
100 Number
and I want to change it to
10 Number
How would I do this? I want to search for the word Number in the text file and then go back along the line to change the number?
Jan
Jan 2022년 10월 18일
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);

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Adding custom doc에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by