Concatene dois arquivos e separe-os com uma nova linha

5

Eu tenho dois arquivos:

k.txt:

3 5 7 9 19 20 

h.txt:

000010
100001
111001

se eu apenas usar cat, não há nova linha. Eu preciso de um comando que forneça um arquivo que se parece com isso:

3 5 7 9 19 20 
000010
100001
111001
    
por user3069326 23.06.2015 / 19:06

6 respostas

13

Se, como sugere a steeldriver, seus arquivos não terminarem com uma nova linha, você pode tentar:

awk '{print}' k.txt h.txt > newfile

ou, se você gosta de jogar golfe

awk 1 k.txt h.txt > newfile

ou

perl -lne 'print' k.txt h.txt 

ou

( cat k.txt ; echo ""; cat h.txt; echo ) > newfile

ou

echo "$(cat k.txt)"; echo "$(cat h.txt)"
    
por terdon 23.06.2015 / 19:17
8

Tente isso com o bash:

cat k.txt <(echo) h.txt > new.txt
    
por Cyrus 23.06.2015 / 19:10
5

Usando sed :

sed '/^/ r h.txt' k.txt

ou melhor (thx @steamdriver )

sed '$a\' k.txt h.txt

Usando ed :

(echo "0a"; cat k.txt; echo "."; echo "wq") | ed -s h.txt

e para a nova linha ausente em k.txt :

(echo "0a"; cat k.txt; echo ""; echo "."; echo "wq") | ed -s h.txt

ou se você precisar de um arquivo de saída separado:

(echo "0a"; cat k.txt; echo ""; echo "."; echo "w out.txt"; echo "q") | ed -s h.txt
    
por A.B. 23.06.2015 / 19:32
3

Ao perceber que o arquivo1 pode não conter a nova linha, por que não simplesmente adicionar a nova linha por conta própria? %código%. Uma maneira alternativa de fazer isso seria (cat file1.txt; printf "\n"; cat file2.txt ) > out.txt

    
por Sergiy Kolodyazhnyy 23.06.2015 / 19:52
2

Esse é o trabalho para colar :

paste -sd'\n' file1 file2
  • -s make paste concatena todas as linhas de cada arquivo na ordem da linha de comando.
  • -d'\n' make paste usou nova linha como delimitador.
por cuonglm 24.06.2015 / 03:26
1

Ninguém mencionou python ainda. Aqui está:

#!/usr/bin/env python2
with open('k.txt') as fk, open('h.txt') as fh, open('out.txt', 'a') as fo:
    for line in fk:
        fo.write(line)
    fo.write('\n')
    for line in fh:
        fo.write(line)

Aqui, depois de ler o arquivo f.txt , inserimos uma nova linha manualmente no arquivo out.txt ( fo.write('\n') ) e, novamente, anexamos o conteúdo do arquivo k.txt ao arquivo out.txt . Finalmente, out.txt conterá a saída desejada.

    
por heemayl 23.06.2015 / 20:31