Как написать фильтр Unix, который выводит только строку каждые N строк

Предположим, что для ввода стандартного ввода фильтра используются следующие строки:

line 1 
line 2
line 3
line 4 
line 5
line 6
line 7
line 8
line 9
line 10

Было бы лучше, если бы кто-нибудь сказал мне, как написать скрипт, который печатает только каждые 4 строки, в случае с приведенным выше примером ввода:

line 1
line 5
line 9
10.12.2008 14:15:13
4 ОТВЕТА
РЕШЕНИЕ
$ yes | cat -n | head -10 | awk 'NR % 4 == 1'
     1  y
     5  y
     9  y

То есть ваш ответ " awk 'NR % 4 == 1'".

16
10.12.2008 14:20:18
Приятно, что кто-то знает о действии по умолчанию в awk.
PEZ 31.12.2008 12:40:54
awk '{ if ((NR-1) %4 ==0) print}'
2
10.12.2008 14:21:47
awk 'NR%4 == 1 {print}'</etc/hosts

Замените 4 на любое значение, которое вы хотите, конечно.

1
10.12.2008 14:22:35
sed -ne '1~4p’

(GNU sed. Не тестировался на OSX и т. Д.)

0
11.08.2016 02:03:59