Use awk com PP_NAME_ como o separador de registro:
awk -v RS='PP_NAME_' -v FS='\n' '/./ {print | "tail -n +2 >FILE"$1}' input
awk lê em um "registro" de cada vez e divide cada registro em "campos". Nesse caso, o uso RS='PP_NAME_' define um registro como todo o texto até a próxima instância dos caracteres PP_NAME_ . O separador de campo, FS , é igual a uma nova linha. Isso significa que cada linha é um "campo". Definido desta forma, cada registro começa com uma linha contendo o número do arquivo no qual queremos gravar o registro. A gravação real do registro no arquivo é feita com: print | "tail -n +2 >FILE"$1 . Como $1 é o número que permanece na primeira linha, "FILE"$1 é o nome do arquivo de saída que queremos gravar. Queremos escrever tudo no registro para aquele arquivo exceto para a primeira linha que possui o número. O uso do comando shell tail -n +2 remove a primeira linha.
O primeiro registro lido é todo o texto antes da primeira ocorrência de PP_NAME_ . Isso significa que o primeiro registro lido está vazio. Como não queremos escrever isso, a expressão regular /./ é colocada antes do comando print . Essa regex corresponde a qualquer registro não vazio. Isso significa que elimina o registro vazio que não queríamos.