输入文件1

输入文件1

我有一个文件,我想在其中提取两列并在特定位置添加到另一个已经充满列的文件。

我可以cat文件1并将其设为变量,然后cat文件2并将其设为变量,然后将变量与export和awk结合起来吗?以前有人以这种方式帮助我处理单行文本,但我不知道它是否适用于整个文件。

例子:

输入文件1

Group F3D0 F3D1 F3D9 F3D     
Otu01 1627 1935 8335 241

输入文件2

oi1 oi2    
lk8 po8    

输出文件

oi1 oi2 Group F3D0 F3D1 F3D9 F3D     
lk8 po8 Otu01 1627 1935 8335 241

答案1

在您展示的情况下,您真正​​需要的是

paste -d ' ' file2 file1

您可以按顺序使用cutand paste(以及一些 shell 进程替换)执行几乎所有您想要的操作,例如输出前两列,file1然后是第二列,file2然后是其余部分,最后是您可以做的file1第一列file2

paste -d ' ' <(cut -d ' ' -f 1,2 file1) <(cut -d ' ' -f 2 file2) <(cut -d ' ' -f 3- file1) <(cut -d ' ' -f 1 file2)

或者(也许更有效)您可以将两个文件按原样粘贴在一起,并将结果通过管道传输以awk按特定顺序选择特定列:

paste -d ' ' file1 file2 | awk '{print $1, $2, $NF, $3, $4, $5, $(NF-1)}'

或(如果您愿意),与perl

paste -d ' ' file1 file2 | 
  perl -alne 'print join " ", @F[0,1],@F[6],@F[2..4],@F[5]'

相关内容