Removing certain lines in a text file by setting a restriction

3 vues (au cours des 30 derniers jours)
jgillis16
jgillis16 le 17 Juin 2015
Commenté : Star Strider le 18 Juin 2015
I am trying to remove certain lines of text in a file by setting the restriction that the 15th column of the each line can only go up to the numerical value of '21'.
For example:
13|PGC000013|0.00370|33.13420|~|15.41|0.675|0.217|0.587|~|0.87|0.102|~|-18.94|72.722|10.908|0.40|0.41|
has a value of '72.722', which is more than the '21' cutoff threshold so it would be eliminated.
My file is attached.

Réponse acceptée

Star Strider
Star Strider le 17 Juin 2015
Modifié(e) : Star Strider le 17 Juin 2015
This works, and it’s relatively fast:
fidi = fopen('jgillis16 copiedlines.txt','rt');
Glxc = textscan(fidi, '%s', 'HeaderLines',1, 'Delimiter','|');
frewind(fidi)
Glxcs = textscan(fidi, '%s', 'EndOfLine','\r\n');
fclose(fidi);
dlen = 18*fix(length(Glxc{:})/18); % Set Row Length
Glxcr = reshape(Glxc{:}(1:dlen), 18, [])'; % Reshape & Transpose
Idx = cellfun(@(x) str2num(x) <= 21, Glxcr(:,15), 'Uni',0); % Find Rows With Col18 <= 21 To Retain & Write To New File
LIdx = logical(cell2mat(Idx)); % Logical Array From Cell
NewGlxc = Glxcs{:}(LIdx,:); % Rows Of New Array
You would then write the ‘NewGlxc’ array to your file. (I would save it as a .mat file if it is only for MATLAB use.)
EDIT — To write it to a text file:
fido = fopen('NewGalaxy.txt','wt');
fprintf(fido, '%s\n', NewGlxc{:});
fclose(fido);
  8 commentaires
jgillis16
jgillis16 le 18 Juin 2015
I had to reload my .txt file as for some reason it wasn't showing an updated version. But, yes it works. Thanks for your continuous help!
Star Strider
Star Strider le 18 Juin 2015
As always, my pleasure!

Connectez-vous pour commenter.

Plus de réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 17 Juin 2015
fid=fopen('fic.txt')
l=fgetl(fid);
k=1;
while ischar(l)
r{k}=l;
k=k+1
l=fgetl(fid);
end
kk=0
for k=1:numel(r)
a=str2double(regexp(r{k},'-?\d+(\.\d+)?','match'));
if a(5)<21
kk=kk+1;
out{kk}=r{k};
k=k+1;
end
end
  9 commentaires
jgillis16
jgillis16 le 18 Juin 2015
Overall, the code does not achieve what I want to do. It doesn't transpose lines that have a value <21 in the 15th column in another file.
Azzi Abdelmalek
Azzi Abdelmalek le 18 Juin 2015
No, they are saved in the file 'fic1.txt'

Connectez-vous pour commenter.

Catégories

En savoir plus sur Environment and Settings dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by