...на самом деле наоборот, печатает много лишнего. В общем,
for i in {1..200} ; do echo string $i ; done | gawk '{str+=1 ; strdat[str]=$0; ; if (length(strdat)>10) delete strdat[str-10]; num=asorti(strdat, strdats, "@ind_num_asc"); for (i=1; i<num; i++) print strdat[strdats[i]] > "/tmp/blah" }'
rain@elitebook:/tmp$ wc -l blah
1755 blah
Хотя если
for i in {1..200} ; do echo string $i ; done | gawk '{str+=1 ; strdat[str]=$0; ; if (length(strdat)>10) delete strdat[str-10]; num=asorti(strdat, strdats, "@ind_num_asc"); for (i=1; i<num; i++) print strdat[strdats[i]]; print "------" }'
то с виду вроде все ок - видим по десятку строк за каждый проход цикла по массиву, разделенные линией. Т.е., в файле ожидается увидеть один блок (9 строк); какого черта он туда сваливает все, как будто делается append (>>)?