🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
6 messages
6 total messages Started by Alex Estevez Wed, 18 Jan 2006 11:04
BD simple en bash scripting
#1346
Author: Alex Estevez
Date: Wed, 18 Jan 2006 11:04
22 lines
1618 bytes
Saludos.

Estoy haciendo un scriptillo que saca datos de un archivo donde cada 
linea contiene valores separados por ':' (al estilo /etc/passwd)

Si no ando desencaminado, esto puede convertirse a un formato mas rapido 
de acceder, pero no encuentro nada, o mucho pero no lo que busco.

Es decir si tengo el archivo datos:

dato1:dato2:dato3
dato4::dato5

Convertirlo a un archivo "basededatos" al estilo de sendmail y luego 
poder usarlo (leerlo) desde el script.

Bash trae algo de esto? o algun comando a instalar que lo haga?

Muchas gracias

-- 
Alex Estevez
Re: BD simple en bash scripting
#1347
Author: J.A. Gutierrez
Date: Thu, 19 Jan 2006 08:48
40 lines
2330 bytes
Alex Estevez <alex.estevezNOSPAM@filnet.es> wrote:

: Es decir si tengo el archivo datos:

: dato1:dato2:dato3
: dato4::dato5

: Convertirlo a un archivo "basededatos" al estilo de sendmail y luego 

	Lo de "al estilo de sendmail" no tiene mucho sentido, ya
	que senmail puede funcionar con distintos tipos de bases
	de datos.

	Tipicamente se usa "makemap" para, a partir del fichero de texto,
	crear el fichero de base de datos; pero eso si, unicamente se
	usan dos campos, no 3 como es tu caso.


: poder usarlo (leerlo) desde el script.

	Por otra parte, no me suena para nada que sendmail incluya
	utilidades para leer desde shell dichas bases de datos.

: Bash trae algo de esto? o algun comando a instalar que lo haga?

	En linux lo tipico seria usar gdbm, con interfaces para C
	y para perl (p.e.), pero no para shell. De todas formas,
	si te preocupa tanto el optimizar el acceso, supongo que
	realmente no te interesa hacerlo en shell...


	En cualquier caso, para tratar el tipo de fichero que describes,
	suele ser mas eficiente usar awk que sh.


-- 
PGP and other useless info at      \
http://webdiis.unizar.es/~spd/      \
finger://daphne.cps.unizar.es/spd    \       Timeo Danaos et dona ferentes
ftp://ivo.cps.unizar.es/pub/          \                         (Virgilio)   
Re: BD simple en bash scripting
#1348
Author: Alex Estevez
Date: Thu, 19 Jan 2006 10:19
48 lines
2850 bytes
J.A. Gutierrez escribi�:
> : Convertirlo a un archivo "basededatos" al estilo de sendmail y luego 
> 
> 	Lo de "al estilo de sendmail" no tiene mucho sentido, ya
> 	que senmail puede funcionar con distintos tipos de bases
> 	de datos.
> 
> 	Tipicamente se usa "makemap" para, a partir del fichero de texto,
> 	crear el fichero de base de datos; pero eso si, unicamente se
> 	usan dos campos, no 3 como es tu caso.

No me he explicado demasiado bien :)
Lo de sendmail era un ejemplo. Como dices, con makemap creas el fichero 
db. Si no recuerdo mal y es lo que queria saber hay un formato habitual 
en unix/linux para procesar archivos de ese tipo y generar tablas o eso 
es lo que busco (de mas de dos campos).

> : Bash trae algo de esto? o algun comando a instalar que lo haga?
> 
> 	En linux lo tipico seria usar gdbm, con interfaces para C
> 	y para perl (p.e.), pero no para shell. De todas formas,
> 	si te preocupa tanto el optimizar el acceso, supongo que
> 	realmente no te interesa hacerlo en shell...
> 
> 	En cualquier caso, para tratar el tipo de fichero que describes,
> 	suele ser mas eficiente usar awk que sh.
> 

Es que lo que busco es , en lugar de usar awk o c, o perl, si ya hay 
algo hecho. Porque como digo el tema me suena (quizas he oido campanas) 
y si ya hay algo hecho usable desde bash algo tal que:

#!/bin/sh
#
# imaginemos que el comando dblee funcione asi:
#
# -fX - x es el campo que queremos recuperar.
# -sY - Y es el campo donde buscamos
# -p string - string es la cadena a buscar.
#
ARCHIVO=miarchivo.db
VALOR=paco
CAMPO1=`dblee -f1 -s2 -p $VALOR $ARCHIVO`


SAludos
-- 
Alex Estevez
Re: BD simple en bash scripting
#1349
Author: J.A. Gutierrez
Date: Fri, 20 Jan 2006 09:30
21 lines
2080 bytes
Alex Estevez <alex.estevezNOSPAM@filnet.es> wrote:

: Es que lo que busco es , en lugar de usar awk o c, o perl, si ya hay 
: algo hecho. Porque como digo el tema me suena (quizas he oido campanas) 
: y si ya hay algo hecho usable desde bash algo tal que:

: CAMPO1=`dblee -f1 -s2 -p $VALOR $ARCHIVO`

	Lo dicho, no me suena que exista eso ya hecho, pero usando
	gdbm, Berkeley DB o similar es trivial (media pagina de codigo)
	hacerse dicho comando; pero insisto que si, por una parte,
	buscas velocidad y por eso quieres usar una base de datos
	en lugar de un fichero de texto, y por otra quieres utilizar
	un lenguaje de script, estas incurriendo en una contradiccion...


-- 
PGP and other useless info at      \
http://webdiis.unizar.es/~spd/      \
finger://daphne.cps.unizar.es/spd    \       Timeo Danaos et dona ferentes
ftp://ivo.cps.unizar.es/pub/          \                         (Virgilio)   
Re: BD simple en bash scripting
#1352
Author: Alex Estevez
Date: Fri, 20 Jan 2006 12:11
25 lines
2320 bytes
J.A. Gutierrez escribi�:
> Alex Estevez <alex.estevezNOSPAM@filnet.es> wrote:
> 
> 	Lo dicho, no me suena que exista eso ya hecho, pero usando
> 	gdbm, Berkeley DB o similar es trivial (media pagina de codigo)
> 	hacerse dicho comando; pero insisto que si, por una parte,
> 	buscas velocidad y por eso quieres usar una base de datos
> 	en lugar de un fichero de texto, y por otra quieres utilizar
> 	un lenguaje de script, estas incurriendo en una contradiccion...

No se trata de velocidad, o solo de velocidad :)

Se trata de varias cosas. Un bash script para en un momento dado tratar 
con unos datos que pueden tambien leerse/escribirse desde otros lados y 
que puedan estar en una maquina con mejor rendimiento que un archivo de 
texto pero sin tener que montar mysql o mayores.

Eso y curiosear, al final realmente la cosa se puede quedar en archivo 
de texto pero era por evitar tener que saber como tratar ese archivo de 
texto en el script bash y en otros (php) que tambien trabajaran sobre el.

Saludos

-- 
Alex Estevez
Re: BD simple en bash scripting
#1353
Author: AnimAlf
Date: Fri, 20 Jan 2006 15:08
33 lines
2225 bytes
El dv 20 de 01 del 2006 a les 13:11 +0100, en/na Alex Estevez va
escriure:

> dato1:dato2:dato3 
> dato4::dato5 

> Convertirlo a un archivo "basededatos" al estilo de sendmail y luego 
> poder usarlo (leerlo) desde el script. 

> Bash trae algo de esto? o algun comando a instalar que lo haga? 
> Muchas gracias 

¿Has probado con cut?
con cut sacas los datos de los campos que quiera indicandolo con el
comando -f es decir el primer y el tercer campo -f1,3 o los tres
primeros campos -f1-3

cut -f1,3 -d: /etc/passwd
cut -f1-3 -d: /etc/passwd

Quizás te interese también el comando paste.

Saludos
-- 
AnimAlf AnimAlf@engendro.sytes.net 
http://www.fut.es/~acl/AnimAlf 
Personal Experimental WebServer: http://www.engendro.sytes.net 
LiNUX ReGiSteRED UseR #91326 
PublicPGPkeyID 0xB3B41215 
Is the truth out there? 

Coalición europea contra el correo comercial no solicitado: 
http://www.euro.cauce.org/es
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads