Script per cambio data automatico di un link

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
master1986
Prode Principiante
Messaggi: 58
Iscrizione: sabato 27 aprile 2013, 15:06
Desktop: Mate
Distribuzione: 18.04 64bit
Sesso: Maschile

Script per cambio data automatico di un link

Messaggio da master1986 »

Ciao a tutti, ho bisogno di creare uno script .sh che mi faccia modificare una stringa (contenente una data all'interno di un file)

Premettiamo che il file in questione sia sorgente.sh al cui interno ci sono dei comandi, e come prima linea un link tipo questo:


http://mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm=2019/07/07/12/

La data è così: anno/mese/giorno, l'ultimo numero non cambia resta sempre così. Mi interessa che lo script vada a modificare ogni giorno la data 2019/07/07 aggiornandola in base a quella del pc/server.


Grazie mille
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Script per cambio data automatico di un link

Messaggio da UbuNuovo »

Cosa intendi con
l'ultimo numero non cambia resta sempre così
?
Nell'esempio hai messo anno mese e giorno a due cifre e con le barre ad inizio e fine; mi sono basato su quanto hai scritto.
La regex accetta come valori del primo campo (anno) da 2 a 4 cifre [0-9]{2,4} e gli altri campi (mese e giorno) come numeri a due cifre; le barre iniziali e finali, nella sostituzione, vengono eliminate, visto che nell'output voluto non le hai messe 2019/07/07.
Considerato l'esempio che hai postato:

il file da modificare:

Codice: Seleziona tutto

8-) cat sorgente.sh
http://mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm ... /07/07/12/
http://questo no... /07/07/12/
il codice sotto, provato nel terminale, funziona

Codice: Seleziona tutto

8-) nome_file='sorgente.sh'
8-) oggi=$(date +%Y/%m/%d)
8-) sed "1s@/[0-9]\{2,4\}/[0-9]\{2\}/[0-9]\{2\}/@$oggi@" "$nome_file"
http://mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm ... 2019/07/07
http://questo no... /07/07/12/
8-) 
una volta verificato il corretto funzionamento, per effettuare realmente la sostituzione nel file, aggiungi il parametro "-i" a sed:

Codice: Seleziona tutto

sed -i "1s@/[0-9]\{2,4\}/[0-9]\{2\}/[0-9]\{2\}/@$oggi@" "$nome_file"
Salva l'Ucraina! 🇺🇦
master1986
Prode Principiante
Messaggi: 58
Iscrizione: sabato 27 aprile 2013, 15:06
Desktop: Mate
Distribuzione: 18.04 64bit
Sesso: Maschile

Re: Script per cambio data automatico di un link

Messaggio da master1986 »

Forse ho inserito il link sbagliato, oppure il forum lo ha modificato:

eccolo:

http://linkcompleto=2019/07/07/12/


Gli / sono obbligatori nel link non si possono togliere. Mi serve quindi modificare anno/mese/giorno quindi 2019/07/07 mentre /12 deve restare così perchè sarebbero cartelle "fisse". Ho provato lo script ma non funziona, forse perchè non mi ero spiegato bene. Grazie mille
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Script per cambio data automatico di un link

Messaggio da UbuNuovo »

Codice: Seleziona tutto

8-) cat sorgente.sh
http://linkcompleto=2014/03/03/12/
http://questo no=2014/03/03/12/

Codice: Seleziona tutto

8-) nome_file='sorgente.sh'
8-) oggi=$(date +%Y/%m/%d)
8-) sed "1s@[0-9]\{4\}/[0-9]\{2\}/[0-9]\{2\}/12/@$oggi/12/@" "$nome_file"
http://linkcompleto=2019/07/07/12/
http://questo no=2014/03/03/12/
8-) 
Vista la differenza dovresti essere capace di modificarlo a tuo piacere.

P.S.: se il 12 è un numero a due cifre variabile:

Codice: Seleziona tutto

sed "1s@[0-9]\{4\}/[0-9]\{2\}/[0-9]\{2\}/\([0-9]\{2\}\)/@$oggi/\1/@" "$nome_file"
Salva l'Ucraina! 🇺🇦
master1986
Prode Principiante
Messaggi: 58
Iscrizione: sabato 27 aprile 2013, 15:06
Desktop: Mate
Distribuzione: 18.04 64bit
Sesso: Maschile

Re: Script per cambio data automatico di un link

Messaggio da master1986 »

Ciao, ti ringrazio per tutto, ma continua a non funzionare. Non riesce a modificare nulla :(
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Script per cambio data automatico di un link

Messaggio da UbuNuovo »

Per la modifica del file, come ho già detto, devi usare '-i'.
Se neanche da terminale vedi la modifica, controlla che la riga da modificare sia realmente la prima (sed "1...).
Se tutto sembra a posto postami le prime righe originali del file da modificare, va bene anche per M.P..
Salva l'Ucraina! 🇺🇦
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Script per cambio data automatico di un link

Messaggio da UbuNuovo »

Se ho capito bene, dovrebbe bastarti questo codice che imposta il parametro GET con la data dell'esecuzione del codice:

Codice: Seleziona tutto

wget http://qua-metti-url-fisso/?prefix=$(date +%Y/%m/%d)/12
Salva l'Ucraina! 🇺🇦
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 12 ospiti