Tengo un comando:
$ awk '{ print length($0); }' /etc/passwd
Imprime el número de caracteres de cada línea en un archivo passwd :
52
52
61
48
81
58
etc.
¿Cómo puedo imprimir el número de caracteres solo para las primeras n líneas?
Por ejemplo, para las primeras 3 líneas daría algo como:
52
52
61
command-line
text-processing
awk
bambosze_babuni
fuente
fuente
awk '(NR<=line) && length($0) {print length($0)}' line=3 file
Respuestas:
Indique
awk
que salga cuando se hayan leído suficientes líneas:Tenga en cuenta que esta solución ignora las líneas vacías, aunque no para el recuento de líneas.
fuente
Una versión Awk directa (no tan eficiente como la de @ Thor), pero un poco más clara:
fuente
awk '{ print length } NR>=3 { exit }' /etc/passwd
, lo votaría.Puede ejecutarlo solo con
awk
un comando, como lo describen @Thor y @JJoao (+1 de mi parte)Puede combinar
awk
yhead
con el-n
siguiente parámetro el número de líneas como se describe a continuación:Gracias por la sugerencia de @Maerlyn para ejecutar en este orden:
head | awk
Por ejemplo, obtendrá las primeras 3 líneas usando:
hombre jefe
fuente
head -n3 /etc/passwd | awk
para que awk no tenga que procesar todo el archivo.head
.head
fue la primera solución de trabajo que se me ocurrió. He votado a @Thor, a la respuesta de @JJoao que usaawk
solo una solución.