我需要将两列(在一个文件中)粘贴到一个具有相同列数(长度 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 功能可以完成对我来说同样有效的功能......