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