С gnu split
:
n=2
m=4
split -l ${m} --filter="head -n ${n}" infile
и если вы хотите сделать это только после i
-й строки, просто перенаправьте предыдущие строки на / dev / null
:
n=2
m=4
i=7
{ head -n ${i} >/dev/null; split -l ${m} --filter="head -n ${n}"; } <infile
Если у вас нет доступа к инструментам gnu
, вы можете использовать awk
:
awk -vn=2 -vm=4 -vi=7 'NR<=i{next}; (NR-i)%m==1{c=1}; c++<=n' infile
#define SIGIO 29
#define SIGPOLL SIGIO
https://github.com/torvalds/linux/blob/v4.12/include/uapi/asm-generic/signal.h#L39