Matlab - borrar lineas impares de un txt

 
Vista:

borrar lineas impares de un txt

Publicado por marita (1 intervención) el 14/08/2013 20:56:01
Hola, tengo un txt con indefinidas lineas de texto.

Me gustaria eliminar solo las lineas impares del mismo.

Alguna ayuda¿

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

borrar lineas impares de un txt

Publicado por Jorge (213 intervenciones) el 15/08/2013 08:07:08
Hola Marita...

Te adjunto un pequeño "script" que podrías utilizar para tal fin, más abajo te describo brevemente las instrucciones utilizadas...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
clear all;clc;
datos = fopen('datos.txt','r');
C=cell(7,1);
n=1;
while ~feof(datos)
   leer_linea = fgetl(datos);
   if isempty(leer_linea) || ~ischar(leer_linea), break, end
   C(n)= cellstr(leer_linea);
   n=n+1;
end
 
for k=1:4;
    C(k)='';
end
fclose(datos);
 
dat2=fopen('datos1.txt','wt+');
fprintf(dat2,'%s \n%s \n%s \n',C{:,1});
fclose(dat2);



Primeramente, se supone que tenemos un archivo de texto llamado "datos.txt" en el cual tenemos guardado una cantidad "x" de líneas de texto, para este ejemplo utilizaré estas 7 lineas que se muestran enseguida:

1
2
3
4
5
6
7
Muy cerca de mi ocaso, yo te bendigo, vida,
porque nunca me diste ni esperanza fallida,
ni trabajos injustos, ni pena inmerecida;
porque veo al final de mi rudo camino
que yo fui el arquitecto de mi propio destino;
que si extraje las mieles o la hiel de las cosas,
fue porque en ellas puse hiel o mieles sabrosas:


Con "fopen" creamos un identificador de fichero, el cual abrimos con permisos de lectura ('r'), enseguida creamos un cell array de 7 filas y 1 columna en el cual se guardarán cada una de las lineas que leamos del txt.
Creamos una constante auxiliar "n" inicializada en "1" que nos servirá como asignador de posición en el cell array que crearemos posteriormente.
Con el bucle "while" leemos cada una de las líneas contenidas en el fichero mediante la función "getl", evidentemente habremos de indicarle a MATLAB, mediante condicionales, como identificará los finales de línea.
Enseguida cada línea leída la guardamos en un arreglo de strings e incrementamos "n" para que el siguiente ciclo la nueva linea leída se guarde en la siguiente posición del arreglo.

Una vez hecho lo anterior, con el ciclo "for" eliminamos todas las posiciones pares del arreglo, simplemente sustituyendo su valor por un string vacío.

Luego, cerramos el identificador de fichero e inicializamos otro con permisos de escritura. En este, mediante la función fprintf escribimos las líneas que han quedado guardadas en nuestro nuevo arreglo. (En este caso yo las he puesto en un nuevo archivo de texto, pero, evidentemente puedes utilizar el mismo fichero para ambos propósitos).

Las líneas que habrán de quedar después de ejecutar el "script" son las siguientes:

1
2
3
porque nunca me diste ni esperanza fallida,
porque veo al final de mi rudo camino
que si extraje las mieles o la hiel de las cosas,


Toma en cuenta que si utilizas este "script" debes hacer las modificaciones necesarias para adecuarlas a tu archivo de texto. Y bueno, os recuerdo que esta no es la única forma de hacer esta operación :) ....

Saludos y cualquier duda podéis preguntar y en medida de lo posible os responderé.

Jorge De Los Santos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

borrar lineas impares de un txt

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 16/08/2013 09:34:38
1
2
3
4
5
6
7
8
9
10
11
clear all
fid1=fopen('eliminar_linea_impar_de_un_texto.txt','r');
fid2=fopen('eliminar_linea_impar_de_un_texto1.txt','w');
while ~feof(fid1)
       fgetl(fid1);
       fprintf(fid2,'%s\n',fgetl(fid1));
 
end
fclose(fid1);
fclose(fid2);
open('eliminar_linea_impar_de_un_texto1.txt');



1
>> eliminar_linea_impar_de_un_texto



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

borrar lineas impares de un txt

Publicado por fer (1 intervención) el 29/04/2014 18:21:29
que buenos tips.

pero alguien me podría ayudar, necesito eliminar las primeras 5 lineas de un archivo .txt, alguien podría ayudarme.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar