Como comentado, o awk é uma boa escolha para isso. Se for uma tarefa única, eu não me incomodaria mais do que criar um script baseado no awk que grava o arquivo reduzido do arquivo completo retirado de seu parâmetro e chamá-lo de um comando find ... -exec .... Como
cat $HOME/bin/shrinkit.sh
#!/bin/sh
awk '/^#/ && headcnt<2 {print; ++headcnt}; $1~/^[0-9]+$/ { if(!(cnt%100)) {print}; ++cnt}; cnt && /^#/ && tailcnt<2 {print; ++tailcnt}' "$1" >"$1.tmp" && mv "$1.tmp" "$1"
cd $workdir
find . -type f -exec $HOME/bin/shrinkit.sh {} \;