# Create multiple copies of a .txt file according to N x 1 array

조회 수: 2 (최근 30일)
Matthew Worker . 2023년 9월 19일
댓글: Dyuman Joshi . 2023년 9월 19일
I have an N by 1 array that contains random integer values, say A = [101, 790, 477, ... , 999]. I also have a text file, say MyFile.txt, that contains rows of alphanumeric data. I wish to replace an integer value that appears on the 2nd row in MyFile.txt with an integer value from array A and then save this with a unique file name. I wish to repeat this for each element in the array A. This process should result in N text files as follows: MyFile_101.txt, MyFile_790.txt, MyFile_477.txt , ... , MyFile_999.txt.
Is there an efficient way to automate the above using a matlab script?
##### 댓글 수: 2없음 표시없음 숨기기
Dyuman Joshi 2023년 9월 19일
Can you attach the text file - 'MyFile.txt' ? Use the paperclip button to attach.
Matthew Worker 2023년 9월 19일
Hi Dyuman, thanks for the reply. Please find attached. Note: it is the value 786 on line 2 that I wish to change each time.

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

### 채택된 답변

Dyuman Joshi 2023년 9월 19일
편집: Dyuman Joshi 님. 2023년 9월 19일
The data in the text file is heterogeneous and stored non-uniformly. This approach should work for that -
y = 19×1 string array
" 0" " 786" " 101" " 1" " 1" " 3" " 0" " H" " A" " J" " K" "h7lA" "K" "9" "11" "M" "AK" "PP" ""
%String to be replaced
str = strip(y(2))
str = "786"
%Let A be the array of values that need to be replace
A = [101, 790, 477, 999];
for k=1:numel(A)
z=y;
%Replacing the values
z(2) = regexprep(z(2),str,string(A(k)));
%Writing to a text file
%These files will be stored in the current directory
%You can change the path according to where you want to store them
writelines(z,sprintf('MyFile_%d.txt', A(k)));
end
##### 댓글 수: 3이전 댓글 1개 표시이전 댓글 1개 숨기기
Dyuman Joshi 2023년 9월 19일
You are welcome!
Dyuman Joshi 2023년 9월 19일
In that case, fprintf to the rescue -
%String to be replaced
str = strip(y(2));
%Let A be the array of values that need to be replace
A = [101, 790, 477, 999];
for k=1:numel(A)
z=y;
%Replacing the values
z(2) = regexprep(z(2),str,string(A(k)));
%Creating file to store
fid = fopen(sprintf('MyFile_%d.txt', A(k)),'wt');
%Printing the data
fprintf(fid,'%s\n',z);
%Closing the file
fclose(fid);
end
%Checking the contents
type MyFile_790.txt
0 790 101 1 1 3 0 H A J K h7lA K 9 11 M AK PP

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

### 카테고리

Help CenterFile Exchange에서 Text Files에 대해 자세히 알아보기

R2022b

### Community Treasure Hunt

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

Start Hunting!

Translated by