Formatar texto com espaços entre linhas

1

Estou copiando texto de um pdf e, quando o colo em um editor de texto, ele sai assim:

O texto não se estende para a margem direita, mas se parece com uma coluna, e há um espaço entre as linhas. Eu gostaria que o texto fosse estendido para a margem direita e sem espaços entre as linhas. Eu posso formatar isso manualmente, mas é muito demorado. Existe um programa que me permita automatizar isso?

    
por user8547 18.01.2015 / 23:36

2 respostas

5

grep . remove todas as linhas em branco. Você pode canalizar o resultado para fmt para reformatar o texto para uma largura de sua escolha. Se você tiver o texto na área de transferência do X, xsel -b irá obtê-lo de lá.

xsel -b | grep . | fmt -w 80 >reformatted.txt

Se você não quiser quebras de linha, poderá substituir as novas linhas por espaços, mas adicione uma nova linha no final.

xsel -b | grep . | tr '\n' ' '; echo

A saída não será muito boa, porque de acordo com a sua imagem, hífens são perdidos, então “vulgar / gar” sai como “vul gar”, “Thanks- / giving” como “Thanksgiving”, etc.

grep . recolhe todos os parágrafos em um. Você pode evitar isso somente se houver alguma maneira em que os parágrafos estejam marcados em seu texto. Se houver uma única linha em branco entre as linhas do mesmo parágrafo e pelo menos duas linhas em branco entre o parágrafo, você poderá remover as quebras de linha e preservar as quebras de parágrafo da seguinte forma:

awk 'length {if (previous < NR-2) print ""; previous = NR; print}'

Você pode tentar executar pdftotext diretamente no PDF. Isso não irá reformatar o texto e pode ou não incluir as linhas em branco (depende de como o PDF foi feito).

    
por 19.01.2015 / 00:01
1

Você pode fazer isso:

awk -v RS=$'\n\n' -v ORS=" " '1 { print; }' file | fold
    
por 19.01.2015 / 00:05