У меня есть команда:
$ awk '{ print length($0); }' /etc/passwd
Это печатает количество символов каждой строки в passwd файле:
52
52
61
48
81
58
etc.
Как я могу распечатать количество символов только для первых n строк?
Например - для первых 3 строк это дало бы что-то как:
52
52
61
Сказать awk
для выхода, когда достаточно строк было считано:
awk '$0 = length; NR==3 { exit }' /etc/passwd
Обратите внимание, что это решение игнорирует пустые строки, хотя не для строки рассчитывают.
Прямая версия Awk (не столь эффективный как @Thor), но немного более ясный:
awk 'NR <= 3 {print length}' /etc/passwd
Можно выполнить его с awk
только команда, как приятно описано @Thor и @JJoao (+1 от меня)
Можно объединиться awk
и head
с параметром -n
следует количеством строк, как описано ниже:
Спасибо за @Maerlyn предложение для выполнения в этом порядке: head | awk
например, Вы получите первые 3 использования строк:
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