我有一个文件,我想在其中提取两列并在特定位置添加到另一个已经充满列的文件。
我可以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
您可以按顺序使用cut
and 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]'