salve a tutti
mi scuso per il titolo non proprio felicissimo ma non me ne veniva in mente uno più specifico.
il problema che vorrei esporvi è il seguente:
ho un file di testo, turni.txt, in esso sono contenuti secondo una struttura ben precisa, la data, l'orario del turno e il nome della persona che l'ha fatto.
ho la necessità, a fine mese, di contare quanti turni sono stati eseguiti da una determinata persona, per fare questo pensavo di passare il tutto con cat e grepcodice:domenica 01/07/2007 - turno 03:00 / 11:00 (nome1 + nome3) domenica 01/07/2007 - turno 11:00 / 19:00 (nome2) lunedi 02/07/2007 - turno 03:00 / 11:00 (nome1 + nome2) lunedi 02/07/2007 - turno 11:00 / 19:00 (nome3) martedi 03/07/2007 - turno 03:00 / 11:00 (nome1 + nome2) martedi 03/07/2007 - turno 11:00 / 19:00 (nome3) mercoledi 04/07/2007 - turno 03:00 / 11:00 (nome1 + nome2) mercoledi 04/07/2007 - turno 11:00 / 19:00 (nome3) giovedi 05/07/2007 - turno 03:00 / 11:00 (nome1 + nome2) giovedi 05/07/2007 - turno 11:00 / 19:00 (nome3) venerdi 06/07/2007 - turno 03:00 / 11:00 (nome1 + nome2) venerdi 06/07/2007 - turno 11:00 / 19:00 (nome3) sabato 07/07/2007 - turno 03:00 / 11:00 (nome1 + nome3) sabato 07/07/2007 - turno 11:00 / 19:00 (nome2) domenica 08/07/2007 - turno 03:00 / 11:00 (nome1 + nome3) domenica 08/07/2007 - turno 11:00 / 19:00 (nome2)
il problema sorge nella numerazione delle righe che non è "consecutiva" naturalmente perchè tiene conto anche di quelle che non vengono visualizzate a causa del grep.
ho quindi pensato di poter risolvere in questo modo:
sicuramente non è eccelso nella forma, ma pare funzionare a dovere, se avete qualche suggerimento per "snellire" un pò dite pure.codice:#!/bin/bash # script per il conteggio dei turni eseguiti echo inserisci il nome read nome cat turni.txt | grep $nome 1>turni_$nome.log cat -n <turni_$nome.log >turni_$nome.txt rm turni_$nome.log totale=`cat turni_$nome.txt | sort -rn | head -1 | cut -c 0-6` echo il numero dei turni compiuti è $totale >>turni_$nome.txt exit 0
![]()


Rispondi quotando

