Eu tenho um comando:
$ awk '{ print length($0); }' /etc/passwd
Ele 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 - nas 3 primeiras linhas, seria algo como:
52
52
61
command-line
text-processing
awk
bambosze_babuni
fonte
fonte
awk '(NR<=line) && length($0) {print length($0)}' line=3 file
Respostas:
Diga
awk
para sair quando linhas suficientes forem lidas:Observe que esta solução ignora linhas vazias, embora não para a contagem de linhas.
fonte
Uma versão direta do Awk (não tão eficiente quanto a de Thor), mas um pouco mais clara:
fonte
awk '{ print length } NR>=3 { exit }' /etc/passwd
, eu votaria.Você pode executá-lo
awk
apenas com o comando, como bem descrito por @Thor e @JJoao (+1 de mim)Você pode combinar
awk
ehead
com o parâmetro a-n
seguir pelo número de linhas, conforme descrito abaixo:Obrigado pela sugestão do @Maerlyn para executar nesta ordem:
head | awk
Por exemplo, você obterá as 3 primeiras linhas usando:
homem cabeça
fonte
head -n3 /etc/passwd | awk
para que o awk não precise processar o arquivo inteiro.head
.head
foi a primeira solução de trabalho que me veio à mente. Votou @Thor, @JJoao resposta que usaawk
apenas solução.