Como numerar parágrafos

4

Eu sei que já fiz esta pergunta, mas não obtive uma resposta que funcionasse. Então, por favor, alguém poderia responder a minha pergunta?

Eu tenho um arquivo de texto, contendo parágrafos de texto, cada um separado por uma única linha vazia. Agora preciso numerar cada parágrafo com seu próprio número. Então o primeiro parágrafo terá o número 1 na margem, o segundo parágrafo terá o número 2 na margem e o terceiro terá o número 3 na margem, etc. Eu sei que parece óbvio, mas acho que meu último post pode não conseguiu passar a mensagem claramente.

Então eu preciso de um comando do Linux que possa fazer esse trabalho. No entanto, meu problema é que o comando precisa ser simples. Por isso, não quero dizer scripts complicados em Perl ou, qualquer dificuldade em entender, blocos de código.

O que eu estou procurando, é um comando simples que pode facilmente realizar a tarefa. Ou, se um script precisar ser escrito, simplifique e explique o código para que alguém que nunca usou scripts Perl nem Bash ainda possa aplicá-lo ao código e entender o que está fazendo.

Desculpe se a pergunta pode parecer indelicada. As respostas serão muito apreciadas porque não há nada na web sobre este assunto.

    
por Inquirer 25.02.2016 / 17:10

1 resposta

5

Tudo obtido no link

Você pode usar perl

$ perl -00pe 's/^/$./' file
  • -00 ativa o modo de parágrafo, em que "linhas" são definidas por consecutivos \ n \ n.
  • -p diz ao perl para imprimir cada linha do arquivo de entrada depois de executar o script fornecido por -e .
  • s/^/$./ substituirá o início da linha (^) pela atual "linha" (parágrafo) número $.

Você pode usar awk

$ awk -v RS='\n\n' -vORS='\n\n' '{print NR$0}' file | head -n -2 
  • -v RS='\n\n' configura o separador de registro do awk para caracteres consecutivos de nova linha. Como o modo de parágrafo do perl, isso faz com que ele trate os parágrafos como "linhas". Em seguida, informamos para imprimir o número da linha atual (NR) e a "linha" atual $0 .
  • -vORS= define o separador de registro de saída como novas linhas consecutivas, de forma que os parágrafos também sejam separados por linhas em branco na saída.
  • head -n -2 para evitar o acréscimo de duas linhas vazias no final da saída.
por 25.02.2016 / 17:31