linux - 如何将 file1 的每一列附加到 file2 的特定字段并制作新的输出文件?

标签 linux bash loops awk

我想将文件 1 的每一列附加为文件 2 的第 4 列,并使用文件 1 中的列号或与输出名称类似的名称导出为新文件。

输入文件 1 和 2 的行数相同:

输入文件 1 有 N 列:

12 23 34  .....
33 34 23
67 09 34
45 67 34
65 76 44
64 33 96

输入文件 2 原本有 5 列

AA BB FF DD 6
AA CC HH NN 7
AA DD II RR 4
AA EE JJ PP 2
AA FF KK QQ 9
AA GG LL SS 8

例如,前 3 个输出文件如下所示:

输出文件 1(第 1 列):

AA BB FF 12 DD 6
AA CC HH 33 NN 7
AA DD II 67 RR 4
AA EE JJ 45 PP 2
AA FF KK 65 QQ 9
AA GG LL 64 SS 8

输出文件 2(第 2 列):

AA BB FF 23 DD 6
AA CC HH 34 NN 7
AA DD II 09 RR 4
AA EE JJ 67 PP 2
AA FF KK 76 QQ 9
AA GG LL 33 SS 8

输出文件 3(第 3 列):

AA BB FF 34 DD 6
AA CC HH 23 NN 7
AA DD II 34 RR 4
AA EE JJ 34 PP 2
AA FF KK 44 QQ 9
AA GG LL 96 SS 8

新文件名可以是 file1、file2、file3...或 column1、column2、column3...或类似名称。请问我怎样才能做到这一点? (for 循环、awk、粘贴等)

如有任何建议,我们将不胜感激。

最佳答案

如果您的列是制表符分隔的,您可以轻松地从cutpaste 中获益:

for i in {1..N} ; do  # Insert the real N here, or change to $(seq 1 $N)
    cut -f1-3 input2 | \
        paste - \
              <(cut -f$i input1) \
              <(cut -f4- input2) \
        > output$i
done

关于linux - 如何将 file1 的每一列附加到 file2 的特定字段并制作新的输出文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13240707/

相关文章:

java - 将条目从一个 Multimap 复制到另一个

linux - 这是如何使用 poll(2) 的 posix 队列?

c -/proc/self/映射到实际代码的段

c++ - 从子文件夹中读取多个图像..C++/opencv

linux - 在 Bash 脚本中查找基于文件名的自动完成

Python 使用对象列表迭代对象

linux - 如何在Perl上创建持久套接字连接?

linux - 在 Makefile 中使用 xargs basename

Bash 脚本、case 语句和子菜单

java - 如何使用 apache poi 循环遍历所有非空行?