remove and replace text in a .dat file

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 日

0 投票

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 件)

カテゴリ

製品

リリース

R2021a

質問済み:

2022 年 10 月 17 日

コメント済み:

Jan
2022 年 10 月 18 日

Community Treasure Hunt

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

Start Hunting!

Translated by