awk - Как распечатать количество символов для первых n строк в файле?

У меня есть команда:

$ awk '{ print length($0); }' /etc/passwd

Это печатает количество символов каждой строки в passwd файле:

52
52
61
48
81
58
etc.

Как я могу распечатать количество символов только для первых n строк?

Например - для первых 3 строк это дало бы что-то как:

52
52
61
10
задан 28 March 2017 в 02:11

3 ответа

Сказать awk для выхода, когда достаточно строк было считано:

awk '$0 = length; NR==3 { exit }' /etc/passwd

Обратите внимание, что это решение игнорирует пустые строки, хотя не для строки рассчитывают.

17
ответ дан 23 November 2019 в 04:15

Прямая версия Awk (не столь эффективный как @Thor), но немного более ясный:

awk 'NR <= 3 {print length}' /etc/passwd
14
ответ дан 23 November 2019 в 04:15

Можно выполнить его с 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 
5
ответ дан 23 November 2019 в 04:15

Другие вопросы по тегам:

Похожие вопросы: