
предположим, что это мой файл, имя которого 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]+" ")