Как добавить один столбец в другой файл

Как добавить один столбец в другой файл

предположим, что это мой файл, имя которого myFile1

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

знаю, что хочу добавить еще столбцы к этому. Этот столбец находится в файле myFile2.

10
11
12
13
14
15
16

. есть ли способ добавить myFile2 к myFile1, чтобы создать эту таблицу:

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

решение1

pasteздесь это довольно удобно, но это накажет вас, если количество значений неравно:

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

Если вы хотите произвольно ограничить количество строк, используемых во втором файле, строками в первом, вы можете это сделать, но это будет немного медленнее и потребует больше оперативной памяти (не то чтобы это имело значение при таком небольшом наборе данных).

$ 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

решение2

Не смог удержаться и добавил подробный вариант (скрипт 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
>>> 

Чтобы немедленно записать изменения в файл file1, код будет таким:

#!/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")

В случае, если также есть вероятность, что файл2 имеетменьшестрок, чем file1, код ниже обеспечивает правильное добавление столбца и возможное добавление дополнительных столбцов:

#!/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]+"  ")

Связанный контент