Combine vários arquivos de texto em um arquivo


10

Estou usando o prcomando unix para combinar vários arquivos de texto em um arquivo de texto:

pr -F *files > newfile

Cada arquivo tem um comprimento diferente, um número diferente de linhas. Estou muito satisfeito com o resultado, gosto que ele inclua o nome do arquivo de texto original seguido pelo conteúdo desse arquivo. No entanto, gostaria de eliminar as linhas em branco entre o nome do arquivo de texto original e seu conteúdo. Eu só quero linhas em branco entre os diferentes arquivos de texto para separar cada um. Além disso, ele imprime o caractere ^Lapós o conteúdo de cada arquivo de texto, e eu gostaria de eliminar esse caractere.

Cada arquivo lido também recebe um número de 'página'. Somente um arquivo é maior que o padrão de 66 linhas. esse arquivo acaba sendo cuspido em 2 'páginas' e é dividido em 2 seções divididas por linhas em branco. É possível escrever esse texto continuamente, sem ser dividido?

Obrigado por qualquer ajuda!

Respostas:


9

Você pode usar o utilitário AWK:

awk 'FNR==1{print ""}{print}' *files > newfile

Fonte: /programming/1653063/how-do-i-include-a-blank-line-between-files-im-concatenating-with-cat


obrigado por sua sugestão. no entanto, -T não está sendo reconhecido. Estou trabalhando no Mac OS X, se isso importa.
Janet

infelizmente, -t cria o mesmo tipo de arquivo que o gato, sem interrupção entre os arquivos de texto lidos.
janet

obrigado Radu. isso me dá o que eu quero! desculpe, percebo agora que estou postando no local errado, pois vejo a notificação sobre estar fora do tópico. Agradeço por sua ajuda!
Janet

12

Para ter linhas vazias entre arquivos:

cat file1 newline file2 newline file3 > newfile

Onde 'nova linha' é um arquivo com linha vazia.


Você pode esclarecer como fazer o arquivo newline? Alguns editores de texto anexarão automaticamente um caractere de final de linha à última linha e outros não, portanto, algumas pessoas podem ter problemas para criar esse arquivo corretamente. Dito de outra maneira: um arquivo de comprimento zero tem zero linhas ou uma linha?
Eliah Kagan

nova linha do vim no vim: wq É isso.
Darius Žitkevičius

Enquanto eu vejo, "cat" coloca uma nova linha automaticamente entre cada arquivo.
myuce 28/11/16

1
for file in *.txt; do (cat "${file}"; echo) >> concatenated.txt; done

O texto acima acrescentará o conteúdo do arquivo eacb txt ao concatenated.txt, adicionando uma nova linha entre eles.


0

Você pode usar catpara despejar o texto dos arquivos em um arquivo com:

cat file1 file2 file3 > newfile

2
Infelizmente cat, não atende a nenhum dos outros requisitos.
Ignacio Vazquez-Abrams

11
sim obrigado mas cat apenas lista o conteúdo de cada arquivo sem o nome do arquivo de texto original e também lista o conteúdo de cada arquivo, um após o outro, sem interrupção. Eu preciso de pelo menos 1 linha em branco entre o conteúdo de cada arquivo de texto no novo arquivo grande.
janet
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.