domenica 29 marzo 2015

Un esempio di ordine con awk [Brevi Esercizi]

Salve!

L'esercizio di oggi consiste nel "mettere ordine" nel file di configurazione /etc/passwd. Mettere ordine nel senso di formattazione dei dati, eh!

Ed awk, in questo, cioè nel fare ordine, è leader mondiale.

Magari si può fare di meglio. Di questo ne sono sicuro.

Intanto vi dico come ho fatto io.

cat /etc/passwd

Il casino infernale....


Lo scritp: ordina.awk

#!/usr/bin/awk -f

BEGIN{
      FS=":"
      print "------------------------------------------------------------------"
      printf "%-14s %-7s %-7s %-15s %-30s\n", "User","UID", "GID", "Home Dir.", "Shell"
      print "------------------------------------------------------------------"
 }


    NR==1, NR==10 {printf "%-14s %-7d %-7d %-15s %-30s\n", $1, $3, $4, $6, $7}



END{
      print ""
      print "------------------------------------------------------------------"
      print ""
   }

Come si può evincere dallo script, NR==1, NR==10, verranno stampate solo le prime 10 righe.

Il risultato


Alla prossima!

P.S.1 Per chi volesse approfondire il comando passwd e il file di configurazione /etc/passwd, qui.

P.S.2 Indice Brevi Esercizi

3 commenti:

  1. #!/usr/bin/awk -f
    #filtro per estrarre e stampare da /etc/passwd un array di dizionari in json di UID,GID,user,shel
    #ciascuna riga in out conterra un dizionario, esclusa la prima e ultima che conterranno rispettivament [ e ]

    BEGIN{
    FS=":"
    print "["
    }

    NR==1, NR==10 {printf "%s{\"UID\":%d\t,\"GID\":%d\t,\"User\":\"%s\"\t,\"directory\":\"%s\"\t,\"shell\":\"%s\"}\n" ,NR==1?"":"," ,$3, $4, $1, $6, $7 }

    END{
    print "]"
    }

    RispondiElimina
  2. #!/usr/bin/awk -f
    #filtro per estrarre e stampare da /etc/passwd un array di array in json di UID,GID,user,shel
    #ciascuna riga in out conterra un array, esclusa la prima e ultima che conterranno rispettivament [ e ]
    #gli array di array sono il doppio piu compatti

    BEGIN{
    FS=":"
    print "["
    }

    NR==1, NR==1000 {printf "%s[%d,%d,\"%s\",\"%s\",\"%s\"]\n" ,NR==1?"":"," ,$3, $4, $1, $6, $7 }

    END{
    print "]"
    }

    RispondiElimina