necesito ayuda con un shell script

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
ronlin
Forista Nuevo
Forista Nuevo
Mensajes: 7
Registrado: Jue May 06, 2010 11:37 pm

necesito ayuda con un shell script

Mensaje por ronlin » Jue May 06, 2010 11:45 pm

Hola soy nueva en esto, y necesito ayuda con respecto a un shell script que trabaja con ficheros y que tiene varias opciones, yo se programar en c y en java pero esto se me va de las manos, si alguien me pudiera ayudar se lo agradeceria.
Crear un shell-script que permita la manipulación de una base de datos contenida en un fichero con la siguiente estructura:

1. Insertar una nueva persona en la base de datos.Tendrá que solicitar los datos e introducirlos
al final del fichero.

2. Eliminar una persona de la base de datos. Se solicitará el DNI de la persona a eliminar y se
borrará de la base de datos.

3. Ordenar la base de datos conforme al campo que solicite el usuario de la misma. Para ello el
programa debe proporcionar cuatro dierentes opicones para que el usuario de la base de datos elija.

4. A partir de un DNI mostrar los datos de la persona a la que corresponde.

Un saludo
Avatar de Usuario
shakka
Forista Mayor
Forista Mayor
Mensajes: 753
Registrado: Dom Sep 18, 2005 7:00 am
Contactar:

Re: necesito ayuda con un shell script

Mensaje por shakka » Vie May 07, 2010 1:22 am

Es un fichero binario o texto plano?

Primero tene claro como esta definida la estructura de la base de datos(el fichero): CSV, separado por espacios, tabuladores, ...

Un ejemplo
http://portfolio.itas.ca/~coreyk/?q=node/10

Si es con bash p.e el interprete que tienes que usar, deberas hechar mano de expresiones regulares. sed, ...
blog http://blog.mbrenes.com
ronlin
Forista Nuevo
Forista Nuevo
Mensajes: 7
Registrado: Jue May 06, 2010 11:37 pm

Re: necesito ayuda con un shell script

Mensaje por ronlin » Vie May 07, 2010 8:34 am

Es un texto plano en el que los datos deben de ir de la siguiente manera Nombre: Apellido1: Apellido2: DNI , mi gran problema es que yo no se guardar esos datos en orden para que luego aparezcan asi, y luego para borrar tendre que buscar ese en particular situarme en esa linea y borrarlo, la verdad es que no por donde cogerlo..
Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: necesito ayuda con un shell script

Mensaje por akodo » Vie May 07, 2010 2:13 pm

Para la primera, creo que es suficiente con que hagas algo como:

Código: Seleccionar todo

echo "nombre:apellido1:apellido2...." >> db.txt
Lo que haces es, en vez de mostrar por pantalla la cadena a introducir, la rediriges al fichero. El ">>" es para que te lo añada al final del fichero.

Para eliminar, supongo que puedes usar grep para filtrar las líneas (concretamente "grep -v" para seleccionar las líneas que no correspondan a ese patrón)

Código: Seleccionar todo

cat db.txt | grep -v "DNI" > db.txt
No sé como responderá el comando que he puesto, así que ten un poco de cuidado y haz unas pruebas. Es posible que se meta en un bucle al leer y escribir en el mismo fichero. Si da problemas cambia el fichero de salida por otro y luego lo copias.

Para la 3 mira las opciones del comando sort (que es para ordenar). Luego puedes volcar el resultado a otro fichero.

Para la 4 puedes volver a utilizar grep para obtener la línea que sea, y a partir de ahí formatear el resultado a tu gusto.

Puedes ver que no necesito posicionarme en ningún sitio. Tan sólo extraigo la información y la proceso. Es cuestión de plantear el problema un nivel por encima, no tanto manipulando "registros" del fichero sino manipulando el fichero en sí mismo.

PD: Estoy suponiendo que el campo del DNI es único (no hay dos registros con el mismo DNI). De no ser así, puede que haya algunos fallos en el script que habría que solucionar.
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])
ronlin
Forista Nuevo
Forista Nuevo
Mensajes: 7
Registrado: Jue May 06, 2010 11:37 pm

Re: necesito ayuda con un shell script

Mensaje por ronlin » Vie May 07, 2010 7:03 pm

Gracias por vuestra ayuda!!!!!!Ya tengo hecha la primera opcion del ejercicio, pero lo de borrar no lo consigo con esa sentencia ni tampoco probando otras variantes, no se como hacer que al darle un dni vaya al fichero y borre todos los datos de esa persona en particular... help me!!!!!!!
Avatar de Usuario
shakka
Forista Mayor
Forista Mayor
Mensajes: 753
Registrado: Dom Sep 18, 2005 7:00 am
Contactar:

Re: necesito ayuda con un shell script

Mensaje por shakka » Vie May 07, 2010 8:33 pm

Para remover una linea usando como argumento que en tal linea exista una cade unica(por DNI) seria usando el comando sed

Código: Seleccionar todo

sed '/AQUI_IRIA_EL_DNI/d' nombre_del_fichero.txt
Hace las pruebas!

Editado -- Sab May 08, 2010 4:33 am --

Tambien podes con grep:
http://www.cyberciti.biz/faq/howto-linu ... ank-lines/
blog http://blog.mbrenes.com
ronlin
Forista Nuevo
Forista Nuevo
Mensajes: 7
Registrado: Jue May 06, 2010 11:37 pm

Re: necesito ayuda con un shell script

Mensaje por ronlin » Vie May 07, 2010 9:22 pm

Muchisimas gracias a todos lo que os habeis molestado en leer mis comentarios y en ayudarme, lo he conseguido y no es precisamente obra mia
=)
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje