Foros del Web » Administración de Sistemas » Unix / Linux »

Concatenar lineas de ficheros??

Estas en el tema de Concatenar lineas de ficheros?? en el foro de Unix / Linux en Foros del Web. Buenas!!!! ando un poco perdida, necesito concatenar dos ficheros txt de la siguiente forma fichero1.txt 1. tomates 2. patatas 3. pimientos 4. calabazas fichero2.txt 5. ...
  #1 (permalink)  
Antiguo 19/03/2015, 02:28
 
Fecha de Ingreso: marzo-2015
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Concatenar lineas de ficheros??

Buenas!!!!

ando un poco perdida, necesito concatenar dos ficheros txt de la siguiente forma

fichero1.txt
1. tomates
2. patatas
3. pimientos
4. calabazas

fichero2.txt
5. verdes

de modo que verdes se concatene con pimientos (linea 5 -2= linea 3)y quede un fichero resultante de la forma:

resultado.txt
1. tomates
2. patatas
3. pimientos verdes
4. calabazas

Es esto imposible mediante comandos en linux??

Mil gracias!!!!
  #2 (permalink)  
Antiguo 19/03/2015, 03:35
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 10 años, 9 meses
Puntos: 401
Respuesta: Concatenar lineas de ficheros??

Por que en el txt2 le das n.5?
Código :
Ver original
  1. paste -d " " a1.txt a2.txt
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-
  #3 (permalink)  
Antiguo 19/03/2015, 03:40
 
Fecha de Ingreso: marzo-2015
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Concatenar lineas de ficheros??

Por que viene de otro fichero donde se le asigno el 5.
Con el comando paste lo que conseguiria sería:

resultado.txt
1. tomates 5. verdes
2. patatas
3. pimientos
4. calabazas

y lo que pretendo conseguir es:

resultado.txt
1. tomates
2. patatas
3. pimientos verdes
4. calabazas

Mil gracias!!!!
  #4 (permalink)  
Antiguo 19/03/2015, 04:08
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 10 años, 9 meses
Puntos: 401
Respuesta: Concatenar lineas de ficheros??

Echa un vistazo a este manual. Aquí.
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-
  #5 (permalink)  
Antiguo 19/03/2015, 06:03
 
Fecha de Ingreso: marzo-2015
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Concatenar lineas de ficheros??

Muchas gracias lauser, estuve mirando el manual que me dijiste, pero sigo sin encontrar la solución.He visto muchas formas de ordenarlo y demás, pero ninguna que me permita concatenar los dos archivos en el orden que yo quiera.

Lo que necesitaría sería un comando que me permitiera concatenar dos lineas de dos archivos diferentes indicandole los numeros de lineas que deseo concatenar.
Tal vez no sea posible hacerlo...

Gracias!!!!
  #6 (permalink)  
Antiguo 23/03/2015, 01:01
 
Fecha de Ingreso: marzo-2015
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Concatenar lineas de ficheros??

Buenos días!!

continuo muyyy perdida, alguien sabe si esto es posible hacerlo?? tal vez sea totalmente imposible hacerlo y solo pierdo tiempo....

Gracias!!!!!
  #7 (permalink)  
Antiguo 23/03/2015, 08:34
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Concatenar lineas de ficheros??

Yo no creo que haya un programa en la línea de comandos que pueda hacer lo que querés. Sin embargo, eso no quiere decir que no se pueda escribir un programa relativamente simple que lo haga.

Se me ocurre un programa en Python como este:
Código Python:
Ver original
  1. with open('fichero1.txt') as f1:
  2.     lineas1 = f1.readlines()
  3.  
  4. with open('fichero2.txt') as f2:
  5.     for linea in f2:
  6.         partes_linea = linea.split('.')
  7.         num = int(partes_linea[0]) # obtenemos el número al frente de la línea
  8.         resto = '.'.join(partes_linea[1:]) # reconstruimos la línea
  9.  
  10.         # modificamos la línea correspondiente del primer archivo. El -1 es porque los índices comienzan en 0, no en 1
  11.         # también eliminamos el salto de línea al final, ya que python los conserva
  12.         lineas1[num - 2 - 1] = lineas1[num - 2 - 1].strip() + ' ' + resto
  13.  
  14. with open('resultado.txt') as f_res:
  15.     f_res.write(''.join(lineas1))
A menos que quieras crear, depurar, usar y mantener un programa como el anterior, yo te diría que intentes generar fichero2.txt de tal manera que las líneas que deben concatenarse tengan el mismo número al frente. Si lo hacés de esa manera, podés usar el programa join para unirlas:

fichero1.txt
Código:
1. tomates
2. patatas
3. pimientos
4. calabazas
fichero2.txt
Código:
3. verdes
Código bash:
Ver original
  1. $ join -a 1 fichero1.txt fichero2.txt
  2. 1. tomates
  3. 2. patatas
  4. 3. pimientos verdes
  5. 4. calabazas

Etiquetas: concatenar, lineas, linux
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




La zona horaria es GMT -6. Ahora son las 17:11.