Чтобы напечатать каждую N -ю строку, используйте
sed -n '0~Np'. Например, чтобы скопировать каждую 5-ю строку
oldfile
в newfile
, делать
sed -n '0~5p' oldfile > newfile
Здесь используется форма адреса sed
first ~ step,
что означает «сопоставить каждую шаг-ю строку, начиная
со строкой first».
В теории,
это напечатает строки 0, 5, 10, 15, 20, 25, … до конца файла.
Конечно, строки 0 нет, поэтому просто печатаются строки 5, 10, 20, 25, …;
0~5
— это просто удобный альтернативный способ сказать 5~5
(который печатает каждую 5-ю строку, начиная с строки 5;
т. е. строки 5, 10, 15, 20, 25, …).
Другой пример этой возможности sed
(что не отвечает на вопрос),
sed -n '2~5p' oldfile
будет печатать строки 2, 7, 12, 17, 22, 27, … до конца файла.