elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [shell script] ayuda con script, :(
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [shell script] ayuda con script, :(  (Leído 10,756 veces)
dark_fidodido

Desconectado Desconectado

Mensajes: 38


Ver Perfil
[shell script] ayuda con script, :(
« en: 7 Septiembre 2009, 13:09 pm »

Bueno a ver si me explico un poco, estoy hacien un script que recoja datos por columnas de dos archivos diferentes y genero otro nuevo que contiene las columnas de cada archivo que me interesan, lo intento hacer con bucles for junto con cut para las columnas pero se me quedan en bucles infinitos....
si me pudierais dar unas ideas para hacerlo...
Gracias


« Última modificación: 7 Septiembre 2009, 13:51 pm por Novlucker » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: ayuda con script, :(
« Respuesta #1 en: 7 Septiembre 2009, 13:19 pm »

Como que el scripting es muy amplio como para adivinar en que lenguaje quieres hacerlo no?  :rolleyes:

Shell scripting?, sería bueno tener una idea de la estructura original de los datos, así como lo que llevas hecho

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
dark_fidodido

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: ayuda con script, :(
« Respuesta #2 en: 7 Septiembre 2009, 13:46 pm »

es en shell script de linux
tengo generados dos archivos separados por tabuladores y por columnas ordenadas ^^
lo que quiero es unirlos solamente y estaba intentando leerlos por columnas (que son un total de 9) y unirlas en un nuevo archivo
colunma=cut -f nºcolumna -d "la separacion" archivo.txt
(para cada una de las columnas independiente)
for colum1 in columna; do
   punto
     for columna2
       punto2
         for columna3
           punto 3
              if punto1=punto2=punto3
                 copio la 1 linea de cada culumna
              fi
           punto3 +1
        done
       punto2 +1
      done
     punto+1
  done


algo asi no lo he puesto real es orientativo



En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [shell script] ayuda con script, :(
« Respuesta #3 en: 7 Septiembre 2009, 16:20 pm »

Con AWK, lo harías fácilmente.

Ejemplo:

Código:
leo@lein:~/Escritorio$ cat "file.txt"
Primera Segunda Tercera Cuarta Quinta
Primera Segunda Tercera Cuarta Quinta
Primera Segunda Tercera Cuarta Quinta
Primera Segunda Tercera Cuarta Quinta
Primera Segunda Tercera Cuarta Quinta
Primera Segunda Tercera Cuarta Quinta


leo@lein:~/Escritorio$ cat file.txt | awk '{print $1}'
Primera
Primera
Primera
Primera
Primera
Primera


leo@lein:~/Escritorio$ cat file.txt | awk '{print $2}'
Segunda
Segunda
Segunda
Segunda
Segunda
Segunda


leo@lein:~/Escritorio$ cat file.txt | awk '{print $3}'
Tercera
Tercera
Tercera
Tercera
Tercera
Tercera


leo@lein:~/Escritorio$ cat file.txt | awk '{print $4}'
Cuarta
Cuarta
Cuarta
Cuarta
Cuarta
Cuarta


leo@lein:~/Escritorio$

Y con cut:
Código:
leo@lein:~/Escritorio$ cat file.txt | cut -d ' ' -f 1
Primera
Primera
Primera
Primera
Primera
Primera


leo@lein:~/Escritorio$ cat file.txt | cut -d ' ' -f 2
Segunda
Segunda
Segunda
Segunda
Segunda
Segunda


leo@lein:~/Escritorio$
« Última modificación: 7 Septiembre 2009, 16:27 pm por Leo Gutierrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: [shell script] ayuda con script, :(
« Respuesta #4 en: 7 Septiembre 2009, 16:29 pm »

Ya habia pensado en AWK mira:
Código:
gawk  '{ print $2 }' archivo.txt > nuevo.txt && gawk '{ print $1 }' archivito.txt >> nuevo.txt

donde

Código:
bash-3.1$ cat archivo.txt
La vida es Bella
El lago Azul
La Manzana Verde
La Pera Rosada
bash-3.1$ cat archivito.txt
Hoy dia
La Lluvia
La Gaviota
bash-3.1$ cat nuevo.txt
vida
lago
Manzana
Pera
Hoy
La
La
bash-3.1$                          
Realmente no me sorprende que tus for anidados  :-\  hagan bucles infinitos, sobretodo porque inicializas la condicion pero no le indicas donde debe terminar  :-\  entonces el se queda leyendo eternamente ..... Y para lo que solicitas la verdad no veo necesidad de bucles de ningun tipo. Pero ya sabras
« Última modificación: 7 Septiembre 2009, 16:31 pm por Leo Gutierrez. » En línea

dark_fidodido

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: [shell script] ayuda con script, :(
« Respuesta #5 en: 8 Septiembre 2009, 09:18 am »

si terminan los bucles!!! pero me tarda muSHo xDDD
voy a ver con el awks
ahora os cuento
gracias
Pues no me funciona bien ya que me coge mal las separaciones....

modifico:
no podria con el cut copiar las columnas y pegarlas en un archivo nuevo? tambien por columnas?? es lo que intentaba hacer con los bucles...

otra cosa.. como puedo hacer que un archivo lo que lea como " lo borre
« Última modificación: 8 Septiembre 2009, 11:07 am por dark_fidodido » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [shell script] ayuda con script, :(
« Respuesta #6 en: 8 Septiembre 2009, 16:58 pm »

si terminan los bucles!!! pero me tarda muSHo xDDD
voy a ver con el awks
ahora os cuento
gracias
Pues no me funciona bien ya que me coge mal las separaciones....

modifico:
no podria con el cut copiar las columnas y pegarlas en un archivo nuevo? tambien por columnas?? es lo que intentaba hacer con los bucles...

otra cosa.. como puedo hacer que un archivo lo que lea como " lo borre

Por favor, vuelve a postear tu duda, pero usando signos de puntuación, así es dificil ayudarte bien.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
dark_fidodido

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: [shell script] ayuda con script, :(
« Respuesta #7 en: 8 Septiembre 2009, 17:15 pm »

.....
está bien, no veo que haya problemas de puntuacion como para no entenderlos... pero vale...
1º- el awk no me funciona bien, ya que coge mal las separaciones, porque tiene varias de distinto tipo en el mismo archivo
2º como podria copiar con el comando "cut" las columnas y pegarlas en otro archivo nuevo, sin que salieran una debajo de otra, que es lo que intentaba hacer con los bucles
3º como leo de un archivo el caracter " y lo borro cada vez que lo encuentre...
4º y última como se añaden lineas en un archivo en una posicion concreta

Gracias
« Última modificación: 8 Septiembre 2009, 17:30 pm por dark_fidodido » En línea

kevlar

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: [shell script] ayuda con script, :(
« Respuesta #8 en: 8 Septiembre 2009, 18:32 pm »

Saludos.

Entiendo que quieres escribir las columnas de dos archivo en uno.  Puede ser más simple pero se me ocurre lo siguiente:

Primero vemos el número de lineas:
Faltan las comillas de ejecución
NL1=[comillas de ejecución]wc -l ARCHIVO1.txt | awk '{print $1}' [comillas de ejecución]
NL2=wc -l ARCHIVO2.txt | awk '{print $1}'

Ahora extraemos los campos que nos interesan:

De nuestro primer archivo y linea1:

COL1ARCH1=head -1 ARCHIVO1.txt | cut -d ' ' -f 1
COL2ARCH1=head -1 ARCHIVO1.txt |tail -1| cut -d ' ' -f 3

De nuestro segundo archivo y linea1:

COL1ARCH2=head -1 ARCHIVO2.txt | cut -d ' ' -f 3
COL2ARCH2=head -1 ARCHIVO2.txt |tail -1| cut -d ' ' -f 5

Hasta aquí si nuestros archivos fueran
archivo1:                                               archivo2
uno dos tres cuatro cinco                     primero segundo tercero cuarto quinto

Los campos elegidos formarían al nuevo archivo:

echo $COL1ARCH1 $COL2ARCH1 $COL1ARCH2 $COL2ARCH2 > nuevo_archivo.txt
print
uno tres tercero quinto

Bueno esto es con la primer linea en la segunda debemos utilizar una variable, y agregar un tail, por ejemplo para trabajar con la línea 2

head -2 archivo1.txt | tail -1

Aquí es donde entra tu FOR   head -$i archivo1.txt | tail -1
La variable $i debe aumentar hasta ser igual al numero de registros NL1 si el número de registros es diferente, entonces se debería insertar un TAB en lugar del registro faltante y el FOR se debería hacer en base al número de registros mayor NL1 ó NL2

Disculpen , no me salen las comillas de ejecución
COL1ARCH1=[comillas de ejecución]head -1 ARCHIVO1.txt | cut -d ' ' -f 1[comillas de ejecución]

Bueno la idea básica ya esta, espero te sirva.

Para tu tercer punto busca información sobre EXPRESIONES REGULARES. Suerte   :)
En línea

dark_fidodido

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: [shell script] ayuda con script, :(
« Respuesta #9 en: 8 Septiembre 2009, 18:52 pm »

mmmmm vale perfect!
ya casi lo tengo, solo me falta añadir lineas en blanco para que cuadren las columnas ^^
alguna idea?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Script que anula otro script
Desarrollo Web
Feedeex 0 2,679 Último mensaje 11 Julio 2011, 19:07 pm
por Feedeex
[Shell script] Un pequeño script para ver temperaturas.
Scripting
manute_powa 3 5,642 Último mensaje 7 Enero 2012, 02:18 am
por manute_powa
Necessito Ayuda sobre un Script.bat
Scripting
eda6 6 3,921 Último mensaje 23 Junio 2012, 02:07 am
por Eleкtro
AYUDA Script Me Gusta Adaptado
PHP
J0RG325 0 2,085 Último mensaje 31 Marzo 2013, 07:21 am
por J0RG325
[AYUDA] [VBS SCRIPT] Script para registro windows q no m funciona
Programación Visual Basic
Davigotchi 4 2,728 Último mensaje 2 Marzo 2020, 09:26 am
por Davigotchi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines