한 열을 다른 파일에 추가하는 방법

한 열을 다른 파일에 추가하는 방법

이것이 이름이 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]+"  ")

관련 정보