我有两个或更多文件
文件A
A: 18.49 RPKM
C: 14.49 RPKM
B: 18.89 RPKM
文件B
A: 21.29 RPKM
C: 38.71 RPKM
B: 36.13 RPKM
我想粘贴这两个文件并从每个文件中只打印一次第一列和第二列
所需的输出(制表符分隔)
A: 18.49 21.29
C: 14.49 38.71
B: 18.89 36.13
我使用了粘贴命令
paste FileA FileB | awk '{ { print $1} {ORS="\t"} for (i=2; i<=NF; i+=3) { print $i } {print "\n"} }'
我得到这个输出
A:
18.49 21.29
中锋:14.49 38.71
乙:18.89 36.13
您能否建议如何解决此问题。谢谢你 !!
对于任意数量的输入文件,在每个 UNIX 机器上的任何 shell 中使用任何 awk,您所需要的只是:
ORS
是输出记录分隔符(通常是换行符)。这就是为什么第{print $1}
一个在它之后得到一个换行符。通常,您需要设置OFS
输出字段分隔符来分隔字段。您可以将所需的字段移到开头,而不是选择性地打印每个字段(以便第 5 列(第二个文件的第二列)成为第 3 列,第 8 列(第三个文件的第二列)成为第 4 列,依此类推。然后你可以减少
NF
删除剩余的、不必要的列。例如,具有B
FileC
和FileD
A 的副本并且是 B 和 A:请确保两个文件都按相同的列排序。