gpt4 book ai didi

bash - 在 bash 中逐列混合多个文件

转载 作者:行者123 更新时间:2023-11-29 09:46:52 25 4
gpt4 key购买 nike

我想将四个 .txt 文件合并到一个唯一的文件中。然而,这个想法不是简单的串联,而是输入文件之间的“交错”,其中 file1 将是前三列,files 2-4 必须是按后续顺序逐列粘贴。因此我们有:

文件1:

file1 <- '  AX-1   1    125    
AX-2 2 456
AX-3 3 3445'
file1 <- read.table(text=file1, header=F)
write.table(file1, "file1.txt", col.names=F, row.names=F, quote=F)

文件2:

file2 <- '  AX-1   AA  AB  AA    
AX-2 AA AA AB
AX-3 BB NA AB'
file2 <- read.table(text=file2, header=F)
write.table(file2, "file2.txt", col.names=F, row.names=F, quote=F)

文件3:

file3 <- '  AX-1   0.20  -0.89  0.005    
AX-2 0 -0.56 -0.003
AX-3 1.2 0.002 0.005'
file3 <- read.table(text=file3, header=F)
write.table(file3, "file3.txt", col.names=F, row.names=F, quote=F)

file4:

file4 <- '  AX-1   1  0  0.56    
AX-2 0 0.56 0
AX-3 1 0 0.55'
file4 <- read.table(text=file34, header=F)
write.table(file4, "file4.txt", col.names=F, row.names=F, quote=F)

我预期的 out 文件可能是这样的:

out <- 'AX-1   1    125  AA  0.2  1 AB -0.89 0 AA 0.005 0.56
AX-2 2 456 AA 0 0 AA -0.56 0.56 AB -0.003 0
AX-3 3 3445 BB 1.2 1 NA 0.002 0 AA 0.005 0.55'
out <- read.table(text=out, header=F)
write.table(out, "out.txt", col.names=F, row.names=F, quote=F)

因此,在 out 中:列 1-3file1,列 4,7 和 10 来自 file25、8 和 11 列来自 file3 以及 6、9 和 12 列 来自 file4

我知道如何在 R 中执行此操作,但我的原始文件太大并且需要花费很多时间。如果有人知道如何直接在 bash 中执行它,我将不胜感激。

最佳答案

这应该有效:

$ join a1 a2 | join - a3 | join - a4 | awk '{printf "%s %s %s %s %s %s %s %s %s %s %s %s\n", $1, $2, $3, $4, $7, $10, $5, $8, $11, $6, $9, $12}'
AX-1 1 125 AA 0.20 1 AB -0.89 0 AA 0.005 0.56
AX-2 2 456 AA 0 0 AA -0.56 0.56 AB -0.003 0
AX-3 3 3445 BB 1.2 1 NA 0.002 0 AB 0.005 0.55

关于bash - 在 bash 中逐列混合多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com