Вероятно, это проще всего сделать либо в awk
, либо в perl
. Если вы не обрабатываете большие объемы данных, то, возможно, с помощью простого сценария оболочки для последующей обработки выведите split
. Однако, это будет проходить через входные данные более одного раза, что может стать узким местом, если вы делаете это для какой-либо задачи онлайн-обработки данных. Должно работать что-то вроде следующего:
bash$ cat input-file | awk '
BEGIN {
fnum = 1
print "HEADER" > fnum
}
{ if ((NR % 10) == 0) {
close(fnum)
fnum++
print "HEADER" > fnum
}
print >> fnum
}
'
bash$ wc -l input-file
239 input-file
bash$ ls
1 19 6
10 2 7
11 20 8
12 21 9
13 22 input-file
14 23
15 24
16 3
17 4
18 5
bash$