Diga ao awk
para sair quando forem lidas linhas suficientes:
awk '$0 = length; NR==3 { exit }' /etc/passwd
Note que esta solução ignora as linhas vazias, embora não para a contagem de linhas.
Eu tenho um comando:
$ awk '{ print length($0); }' /etc/passwd
Imprime o número de caracteres de cada linha em um arquivo passwd :
52
52
61
48
81
58
etc.
Como posso imprimir o número de caracteres apenas para as primeiras n linhas?
Por exemplo - para as primeiras 3 linhas, seria algo como:
52
52
61
Diga ao awk
para sair quando forem lidas linhas suficientes:
awk '$0 = length; NR==3 { exit }' /etc/passwd
Note que esta solução ignora as linhas vazias, embora não para a contagem de linhas.
Uma versão direta do Awk (não tão eficiente como a do Thor), mas um pouco mais clara:
awk 'NR <= 3 {print length}' /etc/passwd
Você pode executá-lo com o comando awk
, bem descrito por @Thor e @JJoao (+1 de mim)
Você pode combinar awk
e head
com o parâmetro -n
a seguir pelo número de linhas conforme descrito abaixo:
Obrigado pela sugestão do @Maerlyn para executar nesta ordem: head | awk
por exemplo. Você receberá as primeiras 3 linhas usando:
head -n3 /etc/passwd | awk '{ print length($0); }'
-n, --lines=[-]K
print the first K lines instead of the first 10; with the leading '-', print all but the last K lines of each file