Peguei um livro de arquivo de texto sem formatação do Project Gutenberg (em torno de 0,5 MB), que quero concatenar para si próprio n
vezes, a fim de gerar um arquivo de texto grande no qual eu possa comparar alguns algoritmos. Existe um comando linux que eu possa usar para conseguir isso? cat
parece ideal, mas não parece muito bom concatenar um arquivo para si mesmo, além de não abordar diretamente os n
momentos que fazem parte da pergunta.
linux
concatenation
Bryce Thomas
fonte
fonte
Respostas:
Duas partes para isso, para mim - primeiro - usar cat para enviar o arquivo de texto para a saída padrão e usar append para adicioná-lo a outro arquivo - por exemplo, foo.txt >> bar.txt anexará foo.txt a bar.txt
em seguida, execute-o n vezes com
substituindo n nesse comando pelo seu número
deve funcionar, onde n é o seu número
Se você usa csh, existe o comando 'repeat'.
repetir partes relacionadas da resposta são copiadas daqui e eu testei em um sistema ubuntu 11.04 no shell bash padrão.
fonte
{1..12}
irá executar o corpo corretamente 12 vezes.for i in {1..n};do cat foo.txt; done > bar.txt
Estou entediado, então aqui estão mais alguns métodos sobre como concatenar um arquivo para si mesmo, principalmente com
head
uma muleta. Perdoe-me se eu me explicar demais, eu apenas gosto de dizer coisas: PSupondo que
N
seja o número de concatenações automáticas que você deseja fazer e que seu arquivo seja nomeadofile
.Variáveis:
Dada uma cópia do
file
chamadofile2
,total_repeats
é o número de vezes quefile
seria necessário adicionarfile2
para torná-lo o mesmo que sefile
fosse concatenado para si próprioN
vezes.Disse MATH está aqui, mais ou menos: MATH (essência)
É o primeiro semestre de ciência da computação, mas já faz um tempo desde que eu fiz uma prova de indução, para que eu não possa superar isso ... (também essa classe de recursão é bem conhecida por existir,
2^Loops
também existe ...)POSIX
Eu uso algumas coisas não-posix, mas elas não são essenciais. Para meus propósitos:
Ah, eu só usei isso. Oh bem, a seção já está aqui ...
Métodos
head
com rastreamento de contagem de linha.Nenhum arquivo temporário, nenhum gato, nem mesmo muita matemática, toda alegria.
tee
com MATEMÁTICAAqui
tee
está a leitura,file
mas sempre anexada a ele, para que continue lendo o arquivo repetidamente atéhead
parar. E sabemos quando parar por causa da MATEMÁTICA . O anexo é exagerado, então usei um arquivo temporário. Você também pode cortar o excesso de linhasfile
.eval
, o senhor das trevas!Isso apenas se expande
cat file file file ...
e avalia. Você pode fazer isso sem o$tmp
arquivo também:O segundo
head
"truques"cat
, colocando um intermediário entre ele e a operação de gravação. Você também pode enganarcat
com outrocat
, mas isso tem um comportamento inconsistente. Tente o seguinte:sed
:Força
sed
a leitura do arquivo inteiro como uma linha, captura tudo e cola-o$total_repeats
várias vezes.Obviamente, isso falhará se você tiver caracteres nulos no seu arquivo. Escolha uma que você sabe que não está lá.
Por enquanto é isso pessoal, espero que essa resposta arbitrária não incomode ninguém. Eu testei todos eles várias vezes, mas sou apenas um usuário de shell de dois anos, então lembre-se disso. Agora para dormir ...
rm $tmp
fonte
Você certamente pode usar
cat
para isso:Para obter
$n
cópias, você pode usar oyes
canalhead -n $n
:Juntar isso dá
fonte