comando wc conta caracteres extras

7
cat > file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.

wc file
1      16      82 file

Alguém pode explicar por que o comando wc retorna 3 caracteres extras neste caso?

    
por Jennifer Nghi Nguyen 23.02.2016 / 23:08

3 respostas

36

wc mostra 3 caracteres a mais porque seu arquivo de exemplo contém um apóstrofo Unicode (provavelmente porque você copiou o conteúdo de um navegador ou editor de texto):

$ cat file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.
$ wc file
1      16      82 file

Com apóstrofo ASCII simples ' :

$ cat file2
Amy looked at her watch. He was late. The sun was setting but Jake didn't care.
$ wc file
1      16      80 file2
Por padrão,

wc exibe o número de bytes por manual :

newline, word, and byte counts for each file

para contagem de caracteres, um argumento -m pode ser usado:

$ cat file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.
$ wc -m file
      80 file.txt
    
por 23.02.2016 / 23:32
12

canalize o arquivo em xxd para ver uma saída hexa lado a lado do ascii, isso permitirá que você veja se há caracteres extras que você não pode ver ou não são imprimíveis.

$ cat file
one‏ and ‏two

$ cat file | wc
      1       3      18

$ cat file | xxd
00000000: 6f6e 65e2 808f 2061 6e64 20e2 808f 7477  one... and ...tw
00000010: 6f0a                                     o.
    
por 23.02.2016 / 23:20
2

wc conta bytes, não caracteres. Se você quiser contar caracteres, use -m option :

cat > file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.

wc -l -w -m file
1      16      80 file

O restante "caractere extra" é de fato a nova linha que você tem no final do arquivo.

    
por 24.02.2016 / 17:12

Tags