Manipulando parágrafos em arquivos unix

1

Eu criei um arquivo de texto no linux contendo três parágrafos. então agora eu quero exibir cada parágrafo com números de linha em resultado, enquanto exibe o conteúdo do arquivo.

O conteúdo do meu arquivo é algo como.

      Below are content navigation systems to help you browse theencyclopedia. They serve as an alternative to the search.

      Below are content navigation systems to help you browse the encyclopedia. They serve as an alternative to the search.

      Below are content navigation systems to help you browse the encyclopedia. They serve as an alternative to the search.

Agora quero imprimir o resultado como

1 Abaixo estão os conteúdos .......... (para o primeiro parágrafo)

2 Abaixo, o conteúdo .......... (para o segundo parágrafo) e assim por diante.

cada parágrafo no arquivo contém uma lacuna de linha

Assim como eu também preciso imprimir o último parágrafo apenas do arquivo acima usando outro comando.

Estou usando o Ubuntu.

    
por Joshi 23.10.2015 / 16:42

2 respostas

3

Perl, modo de parágrafo -00 , imprimir linhas de entrada -p mais um personalizado prefixo com o número.

% (echo hi; echo; echo there) | perl -00 -pe 'print ++$x, " "'

Último parágrafo seria

% (echo hi; echo; echo there) | perl -00 -ne '$l=$_; END { print $l }'
    
por 23.10.2015 / 20:13
1

Você pode usar awk para adicionar números de parágrafo. Digamos que seu arquivo seja chamado de input , você poderia fazer:

awk 'BEGIN {para=1} !/^\s*$/ {printf "%d %s\n", para, $0; para+=1;next};1' input

isso manterá um contador do número de parágrafos que vimos e toda vez que houver uma linha vazia, ele adicionará o contador atual à frente e incrementará o contador.

Para obter o último parágrafo, você pode usar o awk de forma semelhante, supondo que possa haver linhas em branco no final que você não deseja:

awk '!/^\s*$/ {line=$0} END{print line}' input
    
por 23.10.2015 / 16:48

Tags