0votos

Extraer información de cien mil archivos txt e importarla a un excel. en Shell

por josejuan hace 6 años

Como no se indica nada de los archivos de origen, supondré que están separados por tabulador (pero vamos, es añadir una opción a "cut").

Hay que extraer cierta información de un archivo txt y llevarla a un archivo de excel. Hay que hacerlo con cientos de miles de archivos txt que hay en una carpeta. Toda la información extraída irá al mismo archivo de excel.

1
2
3
4
5
6
7
8
9
10
11
# realmente es suficiente hacer 
cut -f "a, b, c, ..." 
 
# donde a, b, c, ... son las columnas (1ª, 2ª, ...) a extraer. 
 
# Forma de usarlo, supongamos que tenemos archivos de origen K###.TXT y queremos 
# un único archivo de salida: 
cat K*TXT | cut -f "a, b" > Resultado.txt 
 
# Si lo que se quiere es que, para cada archivo se genere otro "filtrado", entonces algo como 
ls K*TXT | while read i; do cut -f "a, b" "$i" > "$i.out.txt"; done 
10 comentarios
0votos

Escrito por josejuan hace 6 años

Obviamente, la forma más sencilla de importarlos a excel es ¡abrir el archivo con Excel!
0votos

Escrito por Antonius Antonii hace 6 años

En primer lugar,darte las gracias José Juan. Seguidamente, darte detalles del problema:
Hay una carpeta que contiene cientos de miles de archivos txt. Cada archivo txt contiene datos tabulados en 2 columnas y varias filas.
De cada archivo txt hay que tomar la información de una cierta fila (2 valores: uno de cada una de las columnas) y "volcar" dicha información en un archivo de excel conformando dos columnas, en cuyas filas irán apareciendo las parejas de valores que se vayan tomando de los txt: cada fila contendrá lo proviniente de uno de los txt y así hasta extraer la información de todos los txt. Al final se tendrá un archivo de excel con dos columnas y cien mil filas.
Para complicar la cosa, no siempre habrá que extraer los datos de la misma fila, por tanto, el programa o macro que se desarrolle debe poder dar la opción de escoger de qué fila del txt se escogen los datos.
Evidentemente, la idea es que a la aplicación se le indique la carpeta con los txt y ella se encargue de confeccionar el archivo de excel.
Acabo de empezar a trabajar con Solveet esta mañana y no sé muy bien como va la cosa. Espero que este comentario te llegue y que puedas ayudarme.
Un abrazo.
Antonio.
0votos

Escrito por josejuan hace 6 años

Pues lo dicho, usa "cut" pero como delimitador el salto de línea que posean tus archivos.

Y Solveet no creo que sea para este tipo de problemas, pero bueno...
0votos

Escrito por Miuler hace 6 años

Existe forma de puntuar en forma negativa?? porque esto no es un kata.
1votos

Escrito por josejuan hace 6 años

Miuler:
  • Solveet admite todo tipo de desafíos (afortunadamente), en la home pone "Propón una kata o ejercicio de programación para resolver. Cualquier tipo de desafío es bienvenido.".
  • Por otro lado, ilumínanos y dinos lo que es un kata (debes de ser el único que no sabe lo que es).
  • Además, no seas tan intolerante, si no te gusta un problema o no quieres ayudar, simplemente ignóralo.
0votos

Escrito por Miuler hace 6 años

@josejuan para comenzar:

A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition.

Este ejemplo más que un ejercicio para practicar, suena a tengo un problema que me dejaron en el trabajo, alguien me lo puede resolver?
0votos

Escrito por Vicent hace 6 años

Estoy de acuerdo con josejuan, cualquier tipo de desafío es bueno. De ahí a que la gente lo quiera resolver o no, es otro asunto.

Yo, por ejemplo, no voy a intentar resolverlo.

El problema de limitar los ejercicios, es que alguien quiera exponer un problema (independientemente de que sea para su trabajo o no), que sería muy interesante de resolver para el personal, y por limitar, no podamos aprender de ello. De momento, no hay un volumen de desafíos tan grande como para pensar en el problema de que se convierta en una especie de "spam".

Por mi, todos son bienvenidos, particularmente, resolveré los que me apetezca.

No tengo nada en tu contra, ¿eh? Es mi opinión y nada más.
Saludos.
0votos

Escrito por angierin hace 6 años

Estoy recién comenzando con esta programación y la verdad es que no sé nada... pero este ejemplo me sirve mucho pues tengo varios archivos de texto a los que tengo que extraer varias columnas. Intenté hacer este ejercicio, sólo que el shell nunca me quedó verde en la terminal, entonces, pensé que tal vez existe un lugar determinado para escribir los comandos o no?? y si no es así y solo hay que escribirlo en un archivo de texto y darle extensión .sh, pido por favor escribir el comando de arriba entero, pues he visto que escriben "echo" antes de comenzar a escribir en la línea de comando.

Espero me puedan ayudar. Estoy bien desesperada pues tengo que generar resultados para 4 días más y al parecer tendré que avanzar con excel :s

Muchas gracias
0votos

Escrito por josejuan hace 6 años

@angierin, ten en cuenta que las soluciones que se dan no van a servir a cualquier persona en cualquier situación. Mi solución, asume que se dispone de un shell tipo "unix", pero en cualquier caso, se trata de resolver un desafío (un juego) y por tanto la solución no pretende solucionar "al dedillo" el problema planteado.

Si tienes problemas concretos podrías preguntar en StackOverflow; allí sí se hacen preguntas concretas y se ofrecen respuestas concretas.

Por lo demás, te sugiero empezar estudiando lo que es un shell y los diferentes tipos que hay, etc...
0votos

Escrito por Roer Garcia hace 3 años

Un detalle, la solucion tendria que dar opcion al operador de decir que fila tomar para extraer la informacion? si la respuesta es si y la forma de dar el dato es interactiva... miles de archivos... oops!
No seria mas facil identificar en el nombre del archivo la fila a tomar? La solucion con una macro de VBA es sencilla. pero, como identificar la fila? con una entrada de datos? de 100,000 archivos? ug.

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.