giovedì 10 marzo 2011

Giochiamo con (il) WC

WC, contrariamente a ciò che si può pensare leggendo il titolo del post, è un comando Linux (e non solo di Linux).

E' l'abbreviazione di Word Count e sta per conteggio di parole.

Dal momento che è in voga la moda di smentire ciò che una cosa potrebbe significare all'apparenza (Es. Wine è l'acronimo di: Wine non è un emulatore. GNU è l'acronimo di: Gnu non è Unix.), avrei nominato il comando WC in WCNWC, cioè WC non è un WC :-D

Stamattina mi sono svegliato con l'intento di riscrivere alcune pagine man per farle comprendere anche a mio nonno, ma forse sto esagerando un pò! 

Dunque, volendo essere (relativamente) seri, WC è il comando che conta le parole (e non solo le parole) contenute in un file.

La sintassi è

wc [opzioni] nome del file

Le principale opzioni sono:

-c (indicazione dei numeri di byte di un file)
-m (conteggio dei caratteri contenuti in un file)
-l (conteggio delle linee in un file)
-w (conta le parole contenute in un file)
-L (indica la linea più lunga)

Fin qui, l'estrema sintesi della pagina man!

Passiamo adesso al suo aspetto pratico.

Voglio analizzare un file di testo senza aggiungere alcuna opzione a wc.

Mi sposto nella cartella dove il file è contenuto

cd Documenti

e lancio il comando seguito dal nome del file (e senza opzioni)

wc bit3lux1.txt

Ecco l'output

 4 16 80 bit3lux1.txt

Dove 4 è il numero delle linee (righe) contenute nel file; 16, il numero delle parole; 80, il numero dei byte

Se invece voglio conoscere solo il numero dei byte

wc -c bit3lux1.txt

Per conoscere solo il numero delle parole

wc -w bit3lux1.txt

Se voglio conoscere la riga più lunga (espressa in caratteri)

wc -L bit3lux1.txt

se voglio conoscere solo il numero dei caratteri

wc -m bit3lux1.txt

se voglio conoscere tutti questi elementi

wc -lwmcL bit3lux1.txt

Fin qui, ordinaria amministrazione.

E se volessi mettere a confronto righe, parole e byte di tre file di testo?

wc bit3lux1.txt bit3lux2.txt bit3lux3.txt

Ecco l'output

 3  16  78 bit3lux1.txt
  3  15  73 bit3lux2.txt
  4  11  54 bit3lux3.txt
 10  42 205 totale

Notate che, all'ultima riga, abbiamo anche la somma di righe, parole e byte dei tre file (il totale)

Avviamente, se voglio confrontare i tre file in relazione ad un solo parametro, ad es. i byte, scriverò

wc -c bit3lux1.txt bit3lux2.txt bit3lux3.txt

e così via.

Poniamo il caso, ora, che voglia conoscere il numero dei file di testo presenti in una directory, senza che mi venga indicato il loro nome

ls *.txt | wc -l

L'output, nel mio caso, sarà 3

mentre per conoscere il numero totale dei file presenti in una directory

ls | wc -l

Si prega, comunque, di visitare la pagina man di wc

man wc

Ciao! :-)

7 commenti:

  1. @ Picchio

    Picchio scusami, ma il tuo commento, non so per quale misterioso caso, è scomparso dopo la moderazione.

    RispondiElimina
  2. No problem :D

    Il commendo diceva: "Bel post :D"

    RispondiElimina
  3. Recuperato il commento di Picchio, ora posso andare anche a mangiare. XD

    RispondiElimina
  4. Una volta ho provato a contare quante righe c'erano su un sorgente del Kernel Linux. Prima di ricevere un output ho fatto due caffè e più una frittata di patate XD XD XD XD

    RispondiElimina
  5. > "WCNWC, cioè WC non è un WC"
    LOL spero chi di dovere legga il tuo suggerimento :D

    RispondiElimina