MATLAB Answers

0

how to search and delete the nth ocurance of a text in a text file

Jaffrey Hudson Immanuel Jeyakumar さんによって質問されました 2019 年 7 月 17 日
最新アクティビティ madhan ravi
さんによって コメントされました 2019 年 7 月 17 日
Hallo,
I have a text file 'test.txt' . The contents of test file is as follows.
Tim is Home
John is happy
Sara is funny
Kevin is at work
John is happy
Cat and Dog
I want to open the test.txt file and delete the 'nth' occurance of 'John is happy '. I have attached the text file too. Thanks in advance.
eg. I want to delete the line with ' n th 'occurance.
so It can be 1st occurance
or 2nd Occurance.. etc
Regards,
Jaffrey

  0 件のコメント

サインイン to comment.

製品


リリース

R2015b

3 件の回答

madhan ravi
回答者: madhan ravi
2019 年 7 月 17 日
 採用された回答

s = fileread('test.txt');
v = regexp(s,'\n','split');
z = regexprep(s,'John is happy','',2) % 2 denotes the nth occurence
dlmwrite('sample.txt',z,'delimiter','')

  4 件のコメント

madhan ravi
2019 年 7 月 17 日
Adam Danz , he knows it ;)
Adam Danz
2019 年 7 月 17 日
Is that hunch from your crystal ball? :D
madhan ravi
2019 年 7 月 17 日
Exactly XD

サインイン to comment.


Adam Danz
回答者: Adam Danz
2019 年 7 月 17 日
編集済み: Adam Danz
2019 年 7 月 17 日

The question is unclear whether the goal is to remove the 2nd line of text or to remove the line(s) with "John is happy". The block below shows both interpretations.
% Import text
opts = delimitedTextImportOptions("NumVariables", 1);
opts.VariableNames = "txt";
test = readtable("C:\Users\adanz\Documents\MATLAB\savehere\matlabCentralDocs_trash\test.txt", opts);
test = table2array(test);
% Delete 2nd line
test(2) = [];
% - OR -
% Delete lines that match "John is happy"
idx = strcmpi(test, 'John is happy');
test(idx) = [];
% - OR -
% delete nth occurance of "John is happy"
n = 2;
idx = strcmpi(test, 'John is happy');
test(max(find(idx,n))) = [];
% Write to txt file
fid = fopen('test2.txt','wt');
fprintf(fid,'%s\n',test{:});
fclose(fid);

  3 件のコメント

Thank you for the reply.
My question is to remove the line with 'nth' occurance of 'John is happy'.
eg. I want to delete the line with ' n th 'occurance.
so It can be 1st occurance
or 2nd Occurance.. etc
Adam Danz
2019 年 7 月 17 日
OK, see updated answer.
Thank you ! for the update .

サインイン to comment.



Thank you. It is working now.

  0 件のコメント

サインイン to comment.



Translated by