필터 지우기
필터 지우기

Replace string in text file

조회 수: 88 (최근 30일)
Kian
Kian 2020년 8월 12일
답변: kuchina mani chandra 2023년 4월 3일
I have a txt file in which there are a bunch of lines. The first two lines are shown below:
10125731872 50 3731 -9999 307 166 -9999 827 4090 -9999 587 332 5 -9999
10125731873 50 117 322 9 -9999 187 300 1273 280 103 -9999 39 -9999
I need to add an "M" after all -9999 values. In a text editor this would be simply done by using the replace tool while looking for all "-9999 " and replacing them with "-9999M". Simple! But I have a hard time doing the same thing in Matlab.
Any idea how I can do this simple task?
Thanks.

채택된 답변

Walter Roberson
Walter Roberson 2020년 8월 12일
filename = 'a_txt_file.txt';
new_filename = ['new_' filename];
S = fileread(filename);
S = regexprep(S, '-9999\>', '$&M');
fid = fopen(new_filename, 'w');
fwrite(fid, S);
fclose(fid);
It is recommended that new_filename be different than filename: otherwise if something goes wrong in the writing process, you could lose your only copy of the input.
  댓글 수: 5
Walter Roberson
Walter Roberson 2020년 8월 12일
편집: Walter Roberson 2020년 8월 12일
regexprep(S, '-9999( |$)', '-9999M', 'lineanchors' )
Kian
Kian 2020년 8월 12일
Thanks a lot. This is really neat!

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

추가 답변 (1개)

kuchina mani chandra
kuchina mani chandra 2023년 4월 3일
Function replaceStringIntxtFile(filepath,stringToReplace,ReplaceWith) Filedata = readlines(filepath); replacedFiledata =replace(Filedata,stringToReplace,ReplaceWith); F=fopen(filepath,'w'); fprintf(f,'%s\n'replacedFiledata); fclose(f) end

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by