How to change specific number in a specific line in text file?
조회 수: 2 (최근 30일)
이전 댓글 표시
I want to change a specific number in line number (91) from a text file. Line 91 is: a=c+d*1.5. I need to change 1.5 with some other number. But the problem here is 1.5 is not constant, it keeps on changing. So, I want a general code that changes any number instead of 1.5 as well.
댓글 수: 0
답변 (2개)
Walter Roberson
2019년 4월 25일
in_filename = 'YourInputFileNameGoesHere.txt';
out_filename = 'YourOutputFileNameGoesHere.txt';
S = regexp(fileread(in_filename), '\r?\n', 'split');
if isempty(S{end}); S(end) = []; end %regexp often introduces an empty trailing field
S{91} = sprintf('a=c+d*%g', NewValue);
fid = fopen(out_filename, 'wt'); %or 't' instead of 'wt' if you are not using windows
fprintf(fid, '%s\n', S{:});
fclose(fid);
This code might alter the detail of whether the file ends in a newline, or if instead it just ends (either of which are valid for text files.)
It is not recommended that you write to the same output file as your input file: if something were to go wrong then you would have lost the input file. (But if you are sure you can recover from that...)
댓글 수: 0
ss
2019년 4월 26일
댓글 수: 3
Walter Roberson
2019년 4월 30일
Where I had
S{91} = sprintf('A=c+d*%g', NewValue);
put
S{row} = [S{row}(1:column-1), sprintf('%g', NewValue)];
This assumes that you want to change to the end of line. If you want to change N characters, then:
S{row} = [S{row}(1:column-1), sprintf('%g', NewValue), S{row}(column+N-1:end)];
참고 항목
카테고리
Help Center 및 File Exchange에서 Low-Level File I/O에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!