Como adicionar uma coluna a outro arquivo

Como adicionar uma coluna a outro arquivo

suponha que este seja o meu arquivo cujo nome é myFile1

1 10
2 20
3 30
4 40
5 50
6 60

sei que quero adicionar minhas outras colunas a isso. Esta coluna está no arquivo que é myFile2.

10
11
12
13
14
15
16

. existe alguma maneira de adicionar myFile2 a myFile1 para criar esta tabela:

1 10 10
2 20 11
3 30 12
4 40 13
5 50 14
6 60 15

Responder1

pasteé muito útil aqui, mas irá puni-lo se o número de valores for desigual:

$ paste -d' ' myFile{1,2}
1 10 10
2 20 11
3 30 12
4 40 13
5 50 14
6 60 15
 16

Se você quiser limitar arbitrariamente as linhas usadas no segundo arquivo para o primeiro, você pode, só vai ser um pouco mais lento e usar mais RAM (não que isso importe em um conjunto de dados tão pequeno).

$ paste -d' ' myFile1 <(head -n$(cat myFile1 | wc -l) myFile2)
1 10 10
2 20 11
3 30 12
4 40 13
5 50 14
6 60 15

Responder2

Não pude resistir a adicionar a opção detalhada (script python)

#!/usr/bin/env python3

with open("file1") as l:
    l = [item.replace("\n", "") for item in l]

with open("file2") as l2:
    l2 = [item.replace("\n", "") for item in l2]

for item in [l[i]+" "+l2[i] for i in range(0, len(l))]:
    print(item)

>>> 
1 10 10
2 20 11
3 30 12
4 40 13
5 50 14
6 60 15
>>> 

Para escrever imediatamente as alterações no arquivo1, o código seria:

#!/usr/bin/env python3

with open("file1", "r") as l:
    l = [item.replace("\n", "") for item in l]

with open("file2", "r") as l2:
    l2 = [item.replace("\n", "") for item in l2]

with open("file1", "wt") as edit:
    for item in [l[i]+" "+l2[i] for i in range(0, len(l))]:
        edit.write(item+"\n")

Caso haja também a possibilidade de o arquivo2 termenoslinhas do que arquivo1, o código abaixo cuida da adição correta da coluna e possível adição de mais colunas:

#!/usr/bin/env python3

with open("file1", "r") as l1:
    l1 = [item.replace("\n", "") for item in l1]

with open("file2", "r") as l2:
    l2 = [item.replace("\n", "") for item in l2]

for i in range(0, len(l1)):
    try:
        print(l1[i]+" "+l2[i])
    except IndexError:
        print(l1[i]+"  ")

informação relacionada