Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [script] totale righe

  1. #1
    Utente di HTML.it L'avatar di GunMan
    Registrato dal
    Dec 2005
    Messaggi
    2,642

    [script] totale righe

    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.

    codice:
    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)
    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 grep

    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:

    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
    sicuramente non è eccelso nella forma, ma pare funzionare a dovere, se avete qualche suggerimento per "snellire" un pò dite pure.

    Chaos A.D. Disorder unleashed.
    Starting to burn. Starting to lynch.
    Silence means death. Stand on your feet.
    Inner fear. Your worst enemy.

    Refuse / Resist

  2. #2
    Utente di HTML.it L'avatar di /dev/null
    Registrato dal
    May 2004
    Messaggi
    1,936

    Re: [script] totale righe

    Originariamente inviato da GunMan
    codice:
    cat turni.txt | grep $nome 1>turni_$nome.log
    cat -n <turni_$nome.log >turni_$nome.txt 
    rm turni_$nome.log
    Ma al posto di queste tre righe un semplice un semplice
    codice:
    cat turni.txt | grep $nome | cat -n >turni_$nome.txt
    non basta?
    Ultima modifica ad opera dell'utente /dev/null il 01-01-0001 alle 00:00

  3. #3
    O ancor più sinteticamente:
    codice:
    echo "$nome `grep -c $nome turni.txt`" > turni_$nome.txt
    NeapoliX GNU/Linux
    "Alla maggior parte della gente piace leggere la propria scrittura e annusare l'odore dei propri peti." (Auden)

  4. #4
    Utente di HTML.it L'avatar di GunMan
    Registrato dal
    Dec 2005
    Messaggi
    2,642
    entrambe le soluzioni sono valide, grazie

    sapevo d'altra parte che su 7 righe, 8 erano di troppo

    Chaos A.D. Disorder unleashed.
    Starting to burn. Starting to lynch.
    Silence means death. Stand on your feet.
    Inner fear. Your worst enemy.

    Refuse / Resist

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.