Como obter o número de bytes em apenas uma linha de um arquivo?

6

Eu estou querendo saber como posso obter o número de bytes em apenas uma linha de um arquivo.

Eu sei que posso usar wc -l para obter o número de linhas em um arquivo e wc -c para obter o número total de bytes em um arquivo. O que eu quero, no entanto, é obter o número de bytes em apenas uma linha de um arquivo.

Como eu poderia fazer isso?

    
por chromechris 22.11.2016 / 18:44

3 respostas

14

sed -n 10p myfile | wc -c

contará os bytes na décima linha de myfile (incluindo o caractere de alimentação de linha / nova linha).

Uma variante ligeiramente menos legível,

sed -n "10{p;q;}" myfile | wc -c

(ou sed '10!d;q' ou sed '10q;d' ) irá parar de ler o arquivo após a décima linha, o que seria interessante em arquivos mais longos (ou fluxos). (Obrigado a Tim Kennedy e Peter Cordes para a discussão que leva a isso.)

Existem comparações de desempenho de diferentes maneiras de extrair linhas de texto em cat linha X para linha Y em um arquivo enorme .

    
por 22.11.2016 / 18:57
6

Tente isto:

line=10
tail -n "+$line" myfile | head -n 1 | wc -c

defina line como o número da linha que você precisa contar.

    
por 22.11.2016 / 18:48
5

Um pouco mais simples usando awk :

awk 'NR==10{print length($0)}' myfile
    
por 23.11.2016 / 04:05