Por que wc -l me diz que este arquivo não vazio tem 0 linhas?

4

xclip / xsel são utilitários que permitem saída da área de transferência do tubo para o shell no Ubuntu. Infelizmente, eles parecem falhar em combinação com o comando wc .

Tente isso. Abra um novo arquivo e digite:

this is a line

sem pressionar a tecla enter no final da linha .

Agora, copie este texto e tente o seguinte:

$ xsel -o | wc -l
0

A saída é 0, quando na verdade deveria ser 1. Salve o arquivo (chame-o de myfile.txt ).

Agora tente:

$ cat myfile.txt | wc -l
1

A saída é 1, conforme esperado.

Por que a saída 0 no primeiro caso?

    
por CodeBlue 17.07.2013 / 20:51

2 respostas

4

O problema que você está enfrentando é que wc -l conta novas linhas. Como você não digitou o \n , de fato, há zero novas linhas.

trecho da página de manual wc

Print newline, word, and byte counts for each FILE, and a total line if more than one FILE is specified. With no FILE, or when FILE is -, read standard input. A word is a non-zero-length sequence of characters delimited by white space.

Se você alternar para que wc contagens de caracteres ( -c ) você verá que, de fato, está funcionando bem e pode contar o número de caracteres:

$ xsel -o | wc -c
14

Salvá-lo em um arquivo tem o efeito de adicionar uma nova linha no final do arquivo.

    
por 17.07.2013 / 21:14
0

wc conta os caracteres de fim de linha. A primeira vez que você acabou de marcar o texto, não contendo nenhum caractere de fim de linha. Quando você salva o arquivo, o editor acrescenta um caractere de fim de linha que é contado por wc .

    
por 17.07.2013 / 21:15