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!

janet
fonte

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

Radu Rădeanu
fonte
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.

Darius Žitkevičius
fonte
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.

Francisco Luz
fonte
0

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

cat file1 file2 file3 > newfile
Atari911
fonte
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