[BASH] Inserire colonna con data in file di testo

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3789
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

[BASH] Inserire colonna con data in file di testo

Messaggio da joe »

Ho un file di testo contenente un'unica colonna di numeri.
C'è un modo semplice in bash per ottenere un file avente due colonne in cui la prima contiene una certa data e la seconda contiene il numero già presente nel file di partenza.

Tipo partendo da questo:

Codice: Seleziona tutto

13
22
31
40
59
Vorrei arrivare a quest'altro

Codice: Seleziona tutto

01/01/1965   13
02/02/1965   22
01/03/1965   31
01/04/1965   40
01/05/1965   59
La cosa potrei in qualche modo farla anche in un foglio di calcolo a celle... ma non ci vado troppo d'accordo.
Pensavo a possibili soluzioni...
Se esistesse un comando in bash tale che io do una data iniziale e una finale e lui mi stampa tutte le date ordinate progressivamente ecco che avrei la prima colonna in un file.
Poi però dovrei fondere "verticalmente" tale file con quello di partenza ottenendone un terzo avente la prima e la seconda colonna affiancate...
Non so magari c'è anche una soluzione più facile.
Per esempio so che con cat si può aggiungere il numero di riga ad un file di testo.
Se invece del numero di riga si aggiungesse una data e in seguito le successive come da calendario (quindi anni bisestili apposto ecc...). Ecco che ci saremmo...
Cosa ne pensate?
Avete qualche consiglio?

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: [BASH] Inserire colonna con data in file di testo

Messaggio da targzeta »

Se /tmp/file contiene:

Codice: Seleziona tutto

13
22
31
40
59
Il comando seguente:

Codice: Seleziona tutto

start_date='19650101'; i=0; for row in $(< /tmp/file);do echo $(date -d "$start_date + $i days" '+%d/%m/%y') $row; let i++;done
Produce:

Codice: Seleziona tutto

01/01/65 13
02/01/65 22
03/01/65 31
04/01/65 40
05/01/65 59
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Rispondi