#!/bin/bash

Imagen de juan_bl
0 puntos

Hola, soy un estudiante de programación y estoy empezando a trabajar con bash......llevo días intentando encontrar una solución para eliminar una linea de un fichero.El rollo es que estoy haciendo un programa que gestiona una biblioteca y dentro de un script principal (main) tenemos varias opciones (lo típico, altas y bajas de usuarios, prestamos de libros............) He leído un post de un tal ChuloYo que hace referencia a mi mismo problema pero no me funciona........Los usuarios estan en un fichero llamado Usuarios.txt que está en el mismo directorio que el main y la idea es introducir el numero de usuario para a continuación borrar la linea que contiene sus datos. El formato de la linea es el siguiente:

cod_usuario/nom_usuario/nif/direccion/tfno

de modo que lo que pretendo es introducir por ejemplo 005 y coger y borrar la linea donde esta el usuario con código 005 he probado con el típico echo introduce el numero de socio read R y luego varias combinaciones de sed y $R )(+ o - es así tengo entendido, pero ya sabeis que programando el + o - no sirve jajaja) Os agradecería mucho un poco de ayuda (es un proyectillo de fin de primer curso).Un saludo, gracias

Imagen de razaAztk
+1
0
-1

A ver, que tal esto:

#!/bin/bash

echo 'Eliminar? '
read num

sed -i /^$num/d Usuarios.txt

Referencias: http://www.forosdelweb.com/f41/como-insertar-texto-desde-bash-script-archivo-441920/

Aunque la neta no sé si esa sea una solución elegante. Puede ser que en vez de módificar solo una línea lo que haga realmente sed sea crear todo un fichero nuevo........ no lo sé, sería bueno revisar la documentación.

Saludos!

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de cousteau
+1
0
-1

Y de hecho probablemente cree un archivo nuevo, y al final lo guarde encima del viejo, pero es que no hay otra forma de editar un archivo salvo agregar cosas al final, borrarlo y empezar de cero, o a lo sumo sobreescribir datos byte a byte (no sé si esto se puede).

+1
0
-1

«E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem» significa que dpkg se ha interrumpido y que tienes que ejecutar "sudo dpkg --configure -a" para corregir el problema.
Imagen de Drodriguez
+1
0
-1

Necesito hacer un programa en bash que apague el ordenador cuando la probabilidad de lluvia sea del 95%. haber si me podeis ayudar Gracias!!!!

+1
0
-1

nene22

Imagen de razaAztk
+1
0
-1

Pss el problema fundamental es saber cuando hay una probabilidad del 95%.........

De que medio o web sabes ese dato¿?¿?¿?

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de Drodriguez
+1
0
-1

Pues si quieres que te sea sincero, ni idea aunque supongo que de alguna pagina del tiempo, pero de todas formas es que toy muy perdio y no se como empezar. Solo me han dixo que cut, grey wget o algo de eso tengo que utilizar, no se si esta bien escrito es que no lo tengo delante.
Espero me podais ayudar... No debe de ser complicado pero es que no se como meterle mano. GRacias

+1
0
-1

nene22

Imagen de razaAztk
+1
0
-1

Pss primero investigate una web donde conseguir el dato..........

Ya que sepas la URL, se podrá descargar el fichero html, con wget, para aplicarle algunos filtros de cadena, como grep o sed, obteniendo el dato de probabilidad de lluvia y compararlo con el que queramos nosotros pa' disparar o no el apagado del equipo. Y todo eso lo metemos en un bucle, o con cron.

tons....... a investigar una web, ehhhhh....

Saludos!

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de Drodriguez
+1
0
-1

De aqui podemos sacar la probabilidad de lluvia de atarfe en granada, me interesa esa. Haber si con esto me puede ya ayudar tio. Gracias por todo.

http://www.eltiempo.es/atarfe.html?v=detallada

+1
0
-1

nene22

Imagen de razaAztk
+1
0
-1

Aquí te dejo un script en bash, a modo de ejemplo, que descarga el fichero html, y por medio de filtros de cadenas obtiene la probabilidad de lluvia para el día de "hoy" y lo compara con un valor pre-establecido.

#!/bin/bash

# Obtenemos fichero de internet
wget http://www.eltiempo.es/atarfe.html?v=detallada -O /tmp/clima
# Filtramos la probabilidad de lluvia del día de hoy
lluvia=$(cat /tmp/clima | grep 'src="/img/icons/mini_rain.png"' | head -n1 | grep -o "\<[1-9]\>%" | tr -d '%')

# Comparamos el valor obtenido con uno pre-establecido
if [ $lluvia -gt 95 ]
then
  echo 'Probabilidad alta de que llueva'
else
  echo 'Probabilidad baja de que llueva'
fi

Saludos!

Edito:

Diantres, el código no sale completo, se corta, voy a poner la asignacion de $lluvia en partes

lluvia=$(cat /tmp/clima | grep 'src="/img/icons/mini_rain.png"')
lluvia=$(echo $lluvia | head -n1)
lluvia=$(echo $lluvia | grep -o "\<[1-9]\>%" | tr -d '%')
+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de Drodriguez
+1
0
-1

Gracias pero falta apagar el pc, como quedaria con esa opcion?

Explicame un poco cada parametro que utilizas ok??

Muchas gracias por todo

+1
0
-1

nene22

Imagen de razaAztk
+1
0
-1

¬¬' Crei que te interesaba aprender, y en tanto ibas a buscar las soluciones por tu cuenta.

Pero bueeeeeeeeeeee.......

Para apagar el equipo, puedes utilizar, la muy conocida, orden siguiente:

shutdown -h now

pero esa sólo la puede usar root, a menos de que cambies permisos. Si no quieres ser root pa' apagar el equipo, ve el hilo: http://ubuntumexico.org/node/318.

Ahora pa' el script que te dejé de ejemplo:

wget http://www.eltiempo.es/atarfe.html?v=detallada -O /tmp/clima

Descargamos la página web y la guardamos en el fichero /tmp/clima

Nota: El directorio /tmp, es un directorio donde se guardan ficheros temporalmente. Al apgar/encender el equipo, lo que había en ese directorio será eliminado.

cat /tmp/clima | grep 'src="/img/icons/mini_rain.png"'

Ese segmento, pasa el contenido del fichero al grep, pa' que solo deje pasar las lineas con la cadena que le pasamos como argumento. Esa cadena es un patrón que vimos en el fichero que cumple con la probabilidad de lluvia (pa' darte una mejor idea, abre el fichero con gedit y busca dicha cadena)

... | head -n1

Lo que continua es el head, que nos pasa la primer linea de lo filtrado por grep. La primer linea corresponde a la probabilidad de lluvia del día de hoy.

... | grep -o "\<[1-9]\>%" | tr -d '%'

De la parte anterior, ahora solo dejamos pasar una cadena que comience con un digito y termine en un signo %. Con tr, eliminamos el signo % para tener un valor puramente numerico.

lluvia=$(...)

Todos los filtros anteriores van entre los parentesís, junto con el signo $, para asignarselo a la variable $lluvia

La parte del if sólo realiza la comparación pa' poder decidir en las acciones consecuentes.

----------------------

Observaciones.......... creo que la web que se está usando no actualiza sus probabilidades regularmente, parece ser que es solo por día. En ese caso, puedes poner tu script como una aplicación al inicio pa' que cuando se inicie el equipo te aparezca una ventana advirtiendote de la probabilidad de lluvia, y ya el usuario desidirá si apaga o no el equipo.

Saludos!

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de nahuel_111
+1
0
-1

contanos con que nota aprobó "razaAztk" el examen.

+1
0
-1
Imagen de razaAztk
+1
0
-1

Y... contanos con que nota aprobó "razaAztk" el examen.

El comentario es un "reproche" por haberle respondido de forma un tanto grosera al bro??????

Disculpen, a veces se me infla el ego.............. je.

Pero, neta!, disculpen.

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de nahuel_111
+1
0
-1

ironizaba respecto de quien se aprovecha de la buena voluntad tuya

falto que te pidiera que fueras a rendir por el

te conozco del foro desde hace mucho como para creerte soberbio (yo suelo pecar de eso, pero vos no)

saludos, razaztk

+1
0
-1
Imagen de razaAztk
+1
0
-1

Ahhhhhhh, jajajajaja!

Re-leyendo tu primer mensaje, apenas entendí su intención, jajaja. Yo creo andaba medio dormido por no entender el sarcasmo.......... ja.

Saludos!

nota: jo, que chido que ya me reconozcan como un usuario frecuente de estos foros, je.

nota_02: Igual, saludos pa' bean y demás usuarios.........

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de Drodriguez
+1
0
-1

Si, ya lo hice lo del comando shutdown -h now ayer no me costo mucho pero queria saber si concordaba con lo tuyo aunque al salirme me imaginaba que estaba bien. Muchas gracias por todo de verdad!!!

+1
0
-1

nene22

Imagen de bean
+1
0
-1

Aprobado, tres coloradas o tres distinciones para razAztk .

Sigamos con las probabilidades de la Primitiva o el Gordo del Loto para cuando llueva en Granada; por favor, que necesito un PC nuevito y poderoso para MM.

+1
0
-1
Imagen de Drodriguez
+1
0
-1

Necesito hacer este script pero no se como meterle mano:

Desarrollar un sistema de copias de seguridad, este sistema debe realizar una copia de seguridad del directorio documentos (dentro de su carpeta personal) de cada usuario y almacenarlo de forma ordenada en un directorio oculto cada vez que el usuario cierra sesión en la máquina. Será necesario crear una segunda aplicación para recuperar información o consultar el sistema de copias.

Espero vuestra ayuda.

+1
0
-1

nene22