
이것이 이름이 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
두 번째 파일에 사용되는 행을 첫 번째 파일로 임의로 제한하려는 경우 그렇게 할 수 있습니다. 이는 약간 더 느려지고 더 많은 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
장황한 옵션 추가를 거부할 수 없음(파이썬 스크립트)
#!/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]+" ")