Другой подход с использованием awk, основанный на идее Sundeep об использовании списка:
awk 'BEGIN { a[15] a[25] }; NR % 50 in a'
Установите ключи в массиве a
на основе строк, которые вы хотите напечатать. Выведите строки, где NR % 50
соответствует один из ключей в массиве.
Чтобы дать некоторое представление о производительности, я рассчитал этот подход и сравнил его с другими ответами, взяв среднее user
время за 3 прогона.
0.276s
$ time awk 'BEGIN { a[15] a[25] }; NR % 50 in a' <(seq 1000000) > /dev/null
0.374s
$ time awk 'NR % 50 == 15 || NR % 50 == 25' <(seq 1000000) > /dev/null
0.384s
$ time perl -ne 'print if $.%50==15 || $.%50==25' <(seq 1000000) > /dev/null
0.542s
$ time perl -ne 'print if grep {$_==$.%50} (15,25)' <(seq 1000000) > /dev/null