将具有两个额外列的文件附加到大表中?

将具有两个额外列的文件附加到大表中?

我需要将两列(在一个文件中)粘贴到一个具有相同列数(长度 48554)的非常大的文件中。我试过这个

我有两个文件,其中的列由制表符分隔。文件 1 如下所示:

标头_1 标头_2

0 23

1 25

文件 2 如下所示:

Header_3 header_4

2 24

3 26

我想要的是这样的:

Header_1 header_2 Header_3 header_4

0 23 2 24

1 25 3 26

我尝试过粘贴,例如:

粘贴文件1 文件2 | pr-t-e24

  • 但我明白了:
Header_1 header_2

0 23

1 25 Header_3

header_4

2 24

3 26
  • 即,问题是粘贴将文件 2 中的新列附加到文件 1 中最后一列的底部,而不是根据我的需要并排添加为 +5000 列矩阵中的两个额外列。

    我究竟做错了什么?

答案1

虽然你的定界符看起来更像是一个空格而不是制表符,但paste对我来说效果很好。

您可以尝试的替代方案

join <(nl file1) <(nl file2) | cut -d' ' -f2-5

或者

awk '{ if (FNR==NR) {F[NR]=$1;G[NR]=$2; next}; {printf "%s\t%s\t%s\t%s\n", $1, $2, F[FNR], G[FNR]}}' file2 file1

答案2

实际上,我可以通过将两个文件作为表/数据帧导入来使其在 R 中工作:

 file1<-read.table("file1.txt") 
 file2<-read.table("file2.txt")

然后简单地使用 cbind

combined.txt <- cbind(file1, file2)

但我很难理解,不可能有任何简单的 UNIX 功能可以完成对我来说同样有效的功能......

相关内容