Sempre que você não entender um comando, leia o manual. Nesse caso, man wc
mostrará a você que:
DESCRIPTION
Print newline, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. [...] A word is a non-zero-length
sequence of characters delimited by white space.
Então, os três números são i) o número de linhas; ii) o número de palavras; e iii) o número de bytes. Portanto, se eu executar este diretório:
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file1
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file2
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file3
Ele retornará:
$ ls -l | wc
4 29 152
Isso porque, como você pode ver acima, existem 4 linhas de saída, que contêm 29 "palavras" (uma palavra é definida por espaço em branco) e um total de 152 bytes (observe que isso inclui o caractere newline ( \n
) no final de cada linha).
Para um exemplo mais simples, tente:
$ echo "foo" | wc
1 1 4
O comando echo "foo"
na verdade imprime foo\n
(o \n
é o caractere de nova linha), de modo que é uma linha, uma palavra e 4 bytes.
Tenha em atenção que o terceiro campo é o número de bytes, não caracteres. Isso é particularmente importante em locais onde os caracteres podem ser feitos de vários bytes, como quando usamos UTF-8 (tende a ser a norma hoje em dia).
$ echo fée | wc
1 1 5
No UTF-8, o caractere é é formado por dois bytes. Você pode usar a opção -m
para obter o número de caracteres ( m
é para caracteres multibyte ).
$ echo fée | wc -m
4