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

предположим, что это мой файл, который называется 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
2
задан 25 July 2014 в 16:16

2 ответа

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

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

$ 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
ответ дан 25 July 2014 в 16:16

Не мог сопротивляться добавлению подробной опции (сценарий 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")

В случае, если существует также возможность, что file2 имеет меньше строки, чем 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]+"  ")
1
ответ дан 25 July 2014 в 16:16

Другие вопросы по тегам:

Похожие вопросы: