com gnu split
:
n=2
m=4
split -l ${m} --filter="head -n ${n}" infile
e se você quiser fazer isso somente após a linha i
th, basta redirecionar as linhas anteriores para /dev/null
:
n=2
m=4
i=7
{ head -n ${i} >/dev/null; split -l ${m} --filter="head -n ${n}"; } <infile
Se você não tiver acesso às ferramentas gnu
, poderá usar awk
:
awk -vn=2 -vm=4 -vi=7 'NR<=i{next}; (NR-i)%m==1{c=1}; c++<=n' infile