Azzera filtri
Azzera filtri

How to remove lines that do not start with specific characters?

8 visualizzazioni (ultimi 30 giorni)
The file consists of values like
v 1 2 3
v 1 2 3
vt 1 2 3
vn 1 2 3
f 1 2 3
I want only lines that start with v or f -- other lines should be removed .
How to do this? Please help me. Thanks in advance.
Is it possible using this regexprep?

Risposte (2)

Sriram
Sriram il 2 Gen 2013

Walter Roberson
Walter Roberson il 2 Gen 2013
infile = fileread('YourFileName.txt');
newfile = regexprep(infile, '^[^vf].*$', '', 'lineanchors', 'dotexceptnewline');
fid = fopen('NewFileName.txt');
fwrite(fid, newfile);
fclose(fid)
  3 Commenti
Walter Roberson
Walter Roberson il 2 Gen 2013
All the lines you show in your sample begin with either 'v' or 'f'. A line that starts with 'vn' still starts with 'v'.
What you probably want is
infile = fileread('YourFileName.txt');
newfile = regexp(infile, '^[vf]\s.*$', 'match', 'lineanchors', 'dotexceptnewline')
fid = fopen('NewFileName.txt', 'wt');
fprintf(fid, '%s\n', newfile{:});
fclose(fid);
YourFileName.txt and NewFileName.txt should be replaced by the actual input file name, and the actual name of the new file you want.
The regexp expression here means to look for input lines in the string "infile" that start with the letter v or f, followed by whitespace, and then anything until the end of the line, and copy those lines to the cell array of strings "newfile".
Jan
Jan il 2 Gen 2013
@Sharen: Please do not post "not working" without any explanations in the forum. Do you get an error message (which one?) or do the results differ from your expectations (how?)?

Accedi per commentare.

Categorie

Scopri di più su Data Import and Export in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by