replacing multiple lines with multiple lines in ascii file
이전 댓글 표시
Hi
I would like to make a routine that can replace multiple lines with other multiple lines in a ascii file. This could for example be to replace 7 lines with 4 lines. I can not do it one line at the time because the single lines of the 7 lines are present other places in the file than in the 7 lines.
For single line replacement I have used
fin = fopen('in.txt','r');
fout = fopen('out.txt', 'w+');
while ~feof(fin)
s = fgetl(fin);
s = strrep(s, 'old string', 'newstring');
fprintf(fout,'%s\n',s);
end
fclose(fin);
fclose(fout);
But I can't figure out an easy way to convert this to handle multiple lines replacement.
Do you have any ideas?
Thanks in advance.
Regards Brian.
채택된 답변
추가 답변 (2개)
Ken Atwell
2011년 5월 11일
Have you considered regular expressions? the MATLAB function regexprep would probably do the trick:
old_str = [];
rep_str = [];
for i = 1:5
old_str = [ old_str sprintf('Old Line %d\n', i) ];
end
for i = 2:3
rep_str = [ rep_str sprintf('New Line %d\n', i) ];
end
new_str = regexprep(old_str, 'Old Line 2\W+Old Line 3\W+', rep_str);
The '\W+' is a bit of regular expression magic to match one or more whitespace characters, which is why it can span multiple lines.
Brian Bak
2011년 5월 12일
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!