Ideas para un Script sencillo [bash]

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
rosarino
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Mar Mar 27, 2012 8:48 pm

Ideas para un Script sencillo [bash]

Mensaje por rosarino » Mar Mar 27, 2012 9:03 pm

Hola, soy nuevo en este tema y necesito si alguien me puede dar una mano para hacer el siguiente script

en un archivo tengo 2 columnas, una con el nombre de una variable y la siguiente columna (con una tabulacion) con el valor de la variable.

Necesito hacer un script que me genere un archivo por cada variable (que el nombre del archivo sea el de la variable) y con el valor numerico de esa variable dentro del archivo.

Ej:

rojo 20
azul 40
verde 10
negro 5


que cree 4 archivos, que se llamen rojo, azul, verde y negro con los valores numericos dentro de los archivos.


agradezco de antemano la ayuda.

saludos
Última edición por mcun el Mié Mar 28, 2012 7:33 pm, editado 2 veces en total.
Razón: Titulo editado por contener dichos como ayuda, por favor revisa el reglamento
Avatar de Usuario
t4rr1t0
Ganador CSEL 2011
Ganador CSEL 2011
Mensajes: 357
Registrado: Dom Dic 12, 2010 6:07 pm
Contactar:

Re: Ayuda con Script sencillo

Mensaje por t4rr1t0 » Mar Mar 27, 2012 10:12 pm

Hay más de una forma de hacerlo

Yo utilizaria un ciclo while para leer el archivo por lineas, cut para separar los campos y echo para crear los archivos.

Suponiendo que tu archivo de entrada se llama data, el while sería algo así:

Código: Seleccionar todo

while read linea
do

(Comando a realizar para cada linea)

done < data
El Comando a realizar para cada linea sería, en mi propuesta un echo a la variable linea.

podrias para entender mejor el script, almacenar en variables los campos por separado para hacer una redireccion.

Código: Seleccionar todo

archivo=`echo $linea|cut .....`
dato=`echo $linea|cut .....`

echo $dato > $archivo
El cut te queda de tarea

Cuando se busca ayuda en scripts conviene mostrar lo que se ha hecho, para que se entienda que NO quieres que te hagan la tarea
rosarino
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Mar Mar 27, 2012 8:48 pm

Re: Ayuda con Script sencillo

Mensaje por rosarino » Mar Mar 27, 2012 10:15 pm

Muchas gracias por la ayuda!

En realidad no tengo nada hecho, es que no sabía como empezar, ahora que me respondiste con algunos comandos puedo empezar a leer al respecto para hacerlo y ver los resultados!

Cuando lo tenga armado les pego los resultados.

gracias!
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1807
Registrado: Dom Oct 10, 2004 7:00 am

Re: Ayuda con Script sencillo

Mensaje por neurus » Mar Mar 27, 2012 10:38 pm

Como ya te señalaron, si no aportás código propio es difícil que consigas ayuda. Básicamente, porque vienen varios usuarios nuevos por semana esperando que les resolvamos la tarea.

Ahora, si la intención sí es hacerlo por tu cuenta, te aporto algunos datos:

Un manual de Bash.

Por supuesto, Google tiene miles.

Finalmente:

Yo usaría un bucle for.

for i in $(cat archivo); do accion; done es prácticamente todo tu script (sí, es tan simple como eso).

cat archivo|awk '{print $2}' es, tal vez, el comando más difícil de encontrar -tampoco es que sea ciencia aeroespacial-. Eso te saca por pantalla, siguiendo tu ejemplo:
20
40
10
5

mkdir crea un directorio. Las variables se llaman anteponiéndoles el signo monetario: en el for de allá arriba, la variable es $i. Awk toma cada columna como una variable. la $2, es obviamente, la segunda columna.

Y con eso están todos los comandos necesarios.

Pero empezá leyendo un manual de Bash. La programación se trata bastante menos de sentarse y picar código (menos todavía si se desconoce el lenguaje), que de entender la lógica del algoritmo que se quiere implementar.
Avatar de Usuario
t4rr1t0
Ganador CSEL 2011
Ganador CSEL 2011
Mensajes: 357
Registrado: Dom Dic 12, 2010 6:07 pm
Contactar:

Re: Ayuda con Script sencillo

Mensaje por t4rr1t0 » Mar Mar 27, 2012 10:56 pm

neurus escribió: Yo usaría un bucle for.

for i in $(cat archivo); do accion; done es prácticamente todo tu script (sí, es tan simple como eso).
Como dije, hay varias formas, pensé en proponerle la idea de un for, pero for con un cat tiende a separar por palabras en lugar de lineas

rojo
20
azul
40
verde
10
negro
5

Por lo cual necesitarias algun filtro más.
Avatar de Usuario
Deckon
Moderador
Moderador
Mensajes: 3273
Registrado: Dom Abr 01, 2007 8:00 am
Ubicación: México, Estado de México

Re: Ayuda con Script sencillo

Mensaje por Deckon » Mar Mar 27, 2012 11:05 pm

rosarino por favor edita el titulo de tu primer mensaje y agrega referencia a que lenguaje se enfoca esta duda.
Reglamento del Foro | Temas mas Preguntados | WikiEL | GitHub
Linux User #:406092
Manjaro | Asus P8z77-v | i5-2310 | Nvidia GeForce Gt 610 | Hp Ultrabook Folio 13
rosarino
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Mar Mar 27, 2012 8:48 pm

Re: Ayuda con Script sencillo

Mensaje por rosarino » Mié Mar 28, 2012 2:29 pm

Gracias por la ayuda gente. Entiendo perfectamente la postura y las reglas, fui moderador en otros foros de otras tematicas (lo mio son las redes).

Estoy incursionando en este tema, y la idea es empezar como corresponde, leyendo y aprendiendo, lo que sucede es que esto lo tengo que hacer ya! :)

Agradezco el material para ir leyenedo y los tips de como armar el script.

saludos.
Avatar de Usuario
Deckon
Moderador
Moderador
Mensajes: 3273
Registrado: Dom Abr 01, 2007 8:00 am
Ubicación: México, Estado de México

Re: Ayuda con Script sencillo

Mensaje por Deckon » Mié Mar 28, 2012 3:21 pm

nuevamente te pido que edites tu primer post y le agregues al titulo una referencia al lenguaje sobre el que quieres tratar en este hilo.

cualquier duda puedes conectarte con cualquier administrador o moderador por mensaje privado.
Reglamento del Foro | Temas mas Preguntados | WikiEL | GitHub
Linux User #:406092
Manjaro | Asus P8z77-v | i5-2310 | Nvidia GeForce Gt 610 | Hp Ultrabook Folio 13
rosarino
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Mar Mar 27, 2012 8:48 pm

Re: Ayuda con Script sencillo

Mensaje por rosarino » Mié Mar 28, 2012 6:18 pm

Deckon escribió:nuevamente te pido que edites tu primer post y le agregues al titulo una referencia al lenguaje sobre el que quieres tratar en este hilo.

cualquier duda puedes conectarte con cualquier administrador o moderador por mensaje privado.
hecho!.

saludos.
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1807
Registrado: Dom Oct 10, 2004 7:00 am

Re: Ideas para un Script sencillo [bash]

Mensaje por neurus » Jue Mar 29, 2012 10:24 am

¿Y? ¿Hiciste algo?
rosarino
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Mar Mar 27, 2012 8:48 pm

Re: Ideas para un Script sencillo [bash]

Mensaje por rosarino » Mié Abr 11, 2012 1:18 am

estuve con otras cosas y tuve que pausar esto. Esta noche retomo, veremos que sale! gracias por preguntar.

saludos.
opmeitle
Forista Nuevo
Forista Nuevo
Mensajes: 16
Registrado: Sab Feb 11, 2012 11:52 pm

Re: Ideas para un Script sencillo [bash]

Mensaje por opmeitle » Vie May 04, 2012 7:07 am

buen dia, mire el tema y me parecio util intentarlo, el script dentro de todo funciona pero me tira un resultado inesperado.

Código: Seleccionar todo

colores=$(cat archivo2 | awk '{print $1}')
numeros=$(cat archivo2 | awk '{print $2}')

for i in $colores;
do
    for j in $numeros; do
        echo $j $i 
       #echo $j > $i (crea el archivo y le agrega contenido diferente al de la salida por consola)
    done
done
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje