J'ai une commande:
$ awk '{ print length($0); }' /etc/passwd
Il affiche le nombre de caractères de chaque ligne dans un fichier passwd:
52
52
61
48
81
58
etc.
Comment puis-je imprimer le nombre de caractères pour les n premières lignes seulement?
Par exemple, pour les 3 premières lignes, cela donnerait quelque chose comme:
52
52
61
Dites à awk
de quitter lorsque suffisamment de lignes ont été lues:
awk '$0 = length; NR==3 { exit }' /etc/passwd
Notez que cette solution ignore les lignes vides, mais pas pour le nombre de lignes.
Une version directe en Awk (pas aussi efficace que @ Thor's), mais un peu plus claire:
awk 'NR <= 3 {print length}' /etc/passwd
Vous pouvez l'exécuter avec la commande awk
only, comme décrit joliment par @Thor, et @JJoao (+1 de moi)
Vous pouvez combiner les noms awk
et head
avec le paramètre -n
suivi du nombre de lignes décrit ci-dessous:
Merci pour la suggestion de @Maerlyn d’exécuter dans cet ordre: head | awk
par exemple. Vous obtiendrez les 3 premières lignes en utilisant:
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