マージするファイルが2つあります。そのうちの1つは次のとおりです。
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
長さはすでにゼロです。
あなたができることは、3番目のファイルを使用して出力を収集してからそのtemp2
内容に置き換えることです。コンテンツが「成功」した場合にのみコンテンツを交換し、&&
予期しない方法で実行されないか失敗した場合は、一時ファイルを削除してください。paste
rm -f
temp3
mv
paste temp2 temp > temp3 && mv -f temp3 temp2
rm -f temp3