Foros del Web » Programación para mayores de 30 ;) » Programación General »

ELIMINAR LINEAS REPETIDAS EN TXT - con bat

Estas en el tema de ELIMINAR LINEAS REPETIDAS EN TXT - con bat en el foro de Programación General en Foros del Web. HOla: SI tengo un TXT que contiene esto: Jabón 13.5 Jabón 14 Peines 5 Peines 5 Cucharas 23 cucharas 24 ¿Existe alguna manera ( en ...
  #1 (permalink)  
Antiguo 05/05/2011, 03:28
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 0
ELIMINAR LINEAS REPETIDAS EN TXT - con bat

HOla:

SI tengo un TXT que contiene esto:

Jabón 13.5
Jabón 14
Peines 5
Peines 5
Cucharas 23
cucharas 24

¿Existe alguna manera ( en BAT ) de poder quitar las lineas que se repiten dentro de un fichero? En este caso eliminaría las dos líneas que contienen Peines 5
Ojala alguien sepa. Yo no he conseguido nada.
  #2 (permalink)  
Antiguo 05/05/2011, 11:00
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ELIMINAR LINEAS REPETIDAS EN TXT - con bat

Puedes reemplazar las lineas, aqui el problema es como sabes cual es la cadena a reeemplazar???

Saludos!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 05/05/2011, 16:05
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: ELIMINAR LINEAS REPETIDAS EN TXT - con bat

La única manera que se me ocurre es tomando cada linea e introducirla en una variable a comparar con todas. Lo que no se es como se borra una linea en concreto. El problema es que ese fichero final sería el resultado de la comparación entre dos ficheros anteriores que no ha funcionado del todo bien. Ya que quedan restos de lineas iguales que no se han separado en el resultado que vemos en el ejemplo. COmo aquello no funcionó del todo bien (no comprendo tampoco porque) el problema que me planteo es poder arreglar un fichero limpio en casi su totalidad....solo que ese resto repetido podría llenar varias hojas...Una tarea de chinos, en resumen. XD
  #4 (permalink)  
Antiguo 05/05/2011, 16:08
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: ELIMINAR LINEAS REPETIDAS EN TXT - con bat

Se me ocurre....así a lo tonto...
¿Y si como digo se mete cada linea en una variable y se va comparando linea tras linea y si no está repetida se envia a otro fichero ? ¿Podría funcionar eso? ¿COmo lo ves?
  #5 (permalink)  
Antiguo 12/05/2011, 04:17
 
Fecha de Ingreso: abril-2011
Ubicación: Distrito Federal
Mensajes: 112
Antigüedad: 13 años
Puntos: 17
Respuesta: ELIMINAR LINEAS REPETIDAS EN TXT - con bat

Idea estravagante:

Por cada línea se crea un archivo en un directorio vacío X.

Las repeticiones de líneas no van a crear nada ya que el directorio ya está.

Al final se saca un dir al directorio X que incluso lo vas a poder ordenar.

Esto podría servir si las líneas contienen nombres que sean compatibles con nombres de archivo.

Si serviría no?

Ojalá puedas postear el código si funciona.
  #6 (permalink)  
Antiguo 17/05/2011, 08:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ELIMINAR LINEAS REPETIDAS EN TXT - con bat

Cita:
Iniciado por jevangelista Ver Mensaje
Idea estravagante:

Por cada línea se crea un archivo en un directorio vacío X.

Las repeticiones de líneas no van a crear nada ya que el directorio ya está.

Al final se saca un dir al directorio X que incluso lo vas a poder ordenar.

Esto podría servir si las líneas contienen nombres que sean compatibles con nombres de archivo.

Si serviría no?

Ojalá puedas postear el código si funciona.
Muy buena idea, el codigo de esta idea quedaria mas o menos de esta manera:

Código batch:
Ver original
  1. echo off
  2.  
  3. set /a x=1
  4.  
  5. for /f "tokens=1 delims=" %%a in (token4.txt) do (
  6. rem echo %%a
  7. echo %%a > %%a.test
  8. )
  9.  
  10. for /f "tokens=* delims= " %%a in ('dir /B "*.test"') do (
  11. echo %%a>>semifinish.txt
  12. )
  13.  
  14. echo  > finish.txt
  15.  
  16. for /f "tokens=1,2 delims=." %%a in (semifinish.txt) do (
  17.  
  18. echo %%a >>finish.txt
  19. rem echo %%b
  20.  
  21. rem echo %%p
  22.  
  23. )
  24.  
  25. for /f "tokens=* delims= " %%a in ('dir /B "*.test"') do (
  26. del "%%a"
  27. )
  28.  
  29. del semifinish.txt

Se crean los archivos con su respectivo nombre con extension .test, despues se listan nada mas dichos archivos y se meten los nombres en un archivo de texto, al final se borran todos los archivos temporales y nada mas queda el finish.txt que es donde viene la lista de palabras sin repetir :)

Saludos!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 20/05/2011, 03:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: ELIMINAR LINEAS REPETIDAS EN TXT - con bat

Impresionante!!!
No hay nada como pegarle una patada a la tele para que se vea. jejejejee. Cumple la función que se le exige....entonces es genial!!!!
Muy bien pensado!!!
  #8 (permalink)  
Antiguo 24/04/2015, 17:20
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: ELIMINAR LINEAS REPETIDAS EN TXT - con bat

Hola he utilizado tu codigo para tratar de eliminar duplicados de una lista de texto
que contiene correos electronicos el problema es que me saca perfecto los duplicados pero me deja los correos sin dominio.

por ejemplo

[email protected] ----- me lo lista luego como av@gdtm

hay alguna forma de poder usar este codigo sin que modifique o quite los dominios la verdad apreciaria y valoraria esta inmensa ayuda ya que no encuentro solucion para poder hacerlo

gracias
saludos cordiales

Etiquetas: bat, lineas, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:29.