Это может работать для вас (GNU sed):
sed 's/p/\n/5g;s/p/@/2g;y/\n/p/' file
Заменить 5-е и последующие p
на строку с новой строкой, заменить 2-е и последующие p
на @
и, наконец, восстановить символы новой строки в p
.
Или с почтением к oguz ismail:
sed -e's/p/@/'{4..2} file
Это использует расширение bash для генерации строк подстановки для случаев появления p
с 2 по 4, но в обратном порядке (прямая замена не будет учитывать предыдущие замены).