Так у Вас проблема не в head'ах и tail'ах, они то работают отлично. А в том, что они режут, как им и сказали 50-100 строк, а snmpwalk после этого не завершается, а продолжает честно генерить контент, который Вам уже не нужен.
Тут примерно такая же разница, как между
cat big_file | head -10
и head -10 big_file
Вот вам наглядный тест с полугиговым текстовым файлом:
$ time cat test > /dev/null
real 0m6.708s
$ time cat test | tail -10 > /dev/null
real 0m6.297s
$ time tail -10 test > /dev/null
real 0m0.007s
Можно попробовать накрутить всякие костыли, а-ля
(snmpawlk | head -50 & ) ; sleep сколько_там_надо_времени_нагенерить_50_строк+запас ; killall snmpwalk