Como as outras respostas indicam, cat
não é uma ferramenta muito apropriada para isso.
Como eu disse no meu comentário, sua pergunta está mal definida porque você não especifica como o comando deve reconhecer os parágrafos.
Uma maneira de fazer isso é pela primeira linha sendo recuada.
nl -bp"^ "
é um comando bastante adequado para lidar com essa forma de entrada:
$ cat text1
Some Verse
The quick brown fox
jumps over the lazy dog.
The Owl and the Pussy-cat went to sea
In a beautiful pea green boat,
$ nl -bp"^ " text1
Some Verse
1 The quick brown fox
jumps over the lazy dog.
2 The Owl and the Pussy-cat went to sea
In a beautiful pea green boat,
Outra maneira é usar linhas em branco como separadores.
awk
é muito bom em lidar com esse tipo de coisa.
$ cat num_pp
#!/bin/sh
awk 'BEGIN {start=1}
/^$/ {start=1}
{
if ($0 != "" && start) {
print ++ppnum, $0
start=0
} else print
}' "$@"
$ cat text2
Some Verse
The quick brown fox
jumps over the lazy dog.
The Owl and the Pussy-cat went to sea
In a beautiful pea green boat,
$ ./num_pp text2
1 Some Verse
The quick brown fox
jumps over the lazy dog.
2 The Owl and the Pussy-cat went to sea
In a beautiful pea green boat,