Linux에서 붙여넣기 및 표준 출력 관련 문제

Linux에서 붙여넣기 및 표준 출력 관련 문제

병합하려는 파일이 두 개 있는데 그 중 하나는 다음과 같습니다.

linux$ cat temp2
linear_0_A_B linear_0_B_A
103027.244444 102714.177778
103464.311111 102876.266667
103687.422222 103072.711111
103533.244444 102967.733333
103545.066667 102916.933333
103621.555556 103027.511111
104255.776536 103006.256983
103712.178771 102877.139665
103817.555556 103198.488889
103701.422222 103133.200000

또 다른 파일은 다음과 같습니다:

linux$ cat temp
linear_1_A_B linear_1_B_A
118620.444444 109212.355556
108408.488889 105744.444444
108136.311111 105174.933333
108627.688889 105390.044444
108356.577778 105412.888889
108559.204420 105667.933702
108469.392265 105547.314917
109032.044693 105497.698324
108925.866667 105986.222222
107975.733333 105070.000000

temp의 열을 temp2에 붙여넣고 temp2 파일을 다음과 같이 유지하고 싶습니다.

linux$ paste temp2 temp
linear_0_A_B linear_0_B_A       linear_1_A_B linear_1_B_A
103027.244444 102714.177778     118620.444444 109212.355556
103464.311111 102876.266667     108408.488889 105744.444444
103687.422222 103072.711111     108136.311111 105174.933333
103533.244444 102967.733333     108627.688889 105390.044444
103545.066667 102916.933333     108356.577778 105412.888889
103621.555556 103027.511111     108559.204420 105667.933702
104255.776536 103006.256983     108469.392265 105547.314917
103712.178771 102877.139665     109032.044693 105497.698324
103817.555556 103198.488889     108925.866667 105986.222222
103701.422222 103133.200000     107975.733333 105070.000000

하지만 stdout을 수행하고 temp2를 표시하면 결과가 다릅니다.

linux$ paste temp2 temp > temp2
linux$ cat temp2
        linear_1_A_B linear_1_B_A
        118620.444444 109212.355556
        108408.488889 105744.444444
        108136.311111 105174.933333
        108627.688889 105390.044444
        108356.577778 105412.888889
        108559.204420 105667.933702
        108469.392265 105547.314917
        109032.044693 105497.698324
        108925.866667 105986.222222
        107975.733333 105070.000000

그것을 처리하는 방법? ?

답변1

마지막 블록에 다음과 같이 썼습니다.

linux$ paste temp2 temp > temp2

당신은 이것을 할 수 없습니다. (글쎄, 할 수는 있지만 작동하지 않습니다.) 여기서 일어나는 일은 쉘이 temp2보내려는 명령의 출력을 자르는 것입니다 paste. 그런 다음 명령이 paste temp2 temp실행되지만 이 단계에서는 temp2길이가 이미 0입니다.

당신이 할 수 있는 일은 세 번째 파일을 사용하여 출력을 수집한 다음 temp2해당 내용으로 대체하는 것입니다. 콘텐츠가 "성공"한 경우에만 콘텐츠를 교체하고, &&예상치 못한 방식으로 실행되지 않거나 실패하는 경우 임시 파일을 삭제하세요.pasterm -ftemp3mv

paste temp2 temp > temp3 && mv -f temp3 temp2
rm -f temp3

관련 정보