How to determine the line-number in a file that contains specific statements

Dear All,
I do have a file that has a line starting with the following statement:
I Need This Line
What I need is to locate the line number of this line and fgetl of the file from beginning to this line(including this line). What should I do? Basically the problem here is the location of the wanted line varies from one file to another so that it makes way too difficult for me to obtain the information I want. Please be advised that I used fopen command to open my input file. Thank you so much

7 Comments

cant you use strcmp(line,'I Need This Line')?
No! It did not work! I don't get what you meant actually!
Run a loop for each line....get the content of the line using fgetl. Use strcmp(line_content,'I Need This Line'). If the line_content has the string 'I Need This Line', you will get one else zero. Doc strcmp.
I do not to get 1!! Sometimes the statement appears in line number 17 and sometimes 18. I want the output to be 17 and 18 respectively!!!!
no in fact I got what you suggested but does not work
I used this code
for c=1:19
line=fgets(fid)
if (strcmp(line,'I Need This Line')==1)
%take this c
end
end
But it reads the content of all of my lines as -1 which I do not know why
You are not opening the file properly....what is fid value? It shall be +ve. Cross check the value of line with your file.

Sign in to comment.

 Accepted Answer

Homayoon you may try the following code with the attached txt file.
file = 'Junk.txt' ;
fid = fopen(file,'r') ;
str = 'I Need This Line' ;
for c=1:13
line=strtrim(fgets(fid)) ;
if strcmp(line,str)
iwant = c ;
end
end
fclose(fid) ;
iwant is the line number you wanted.

More Answers (1)

Hi,
I guess you need something like that.
Assuming you have a .txt file : MyTextFiles.txt, that contains :
ruiez
gjrigj
rjigjri
I Need This Line and the rest of it ?
gjijri
pzepaz
you need a code like that :
% Open and read the content
Myfile = 'MyTextFiles.txt';
fid = fopen(Myfile);
Text = textscan(fid,'%s','delimiter','\n');
Text = Text{1};
fclose(fid);
% pattern to find at the beginning of a line
pattern = 'I Need This Line';
% analyze
found = 0;
for i = 1:length(Text)
if strncmp(Text{i},pattern,length(pattern))
found = i;
break;
end
end
% result
if found
fprintf('pattern at line %d\n',found)
else
fprintf('pattern not found')
end
Of course, you can optimize this code and add a for loop for all the txt files you need to analyse.

Categories

Asked:

on 24 Mar 2016

Edited:

on 24 Mar 2016

Community Treasure Hunt

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

Start Hunting!