在linux中合并多个文件中的列

在linux中合并多个文件中的列,linux,Linux,我有一个文件夹,大约有1000个以制表符分隔的文本文件。 我的文件的一半称为sampleX.features.tab,另一半称为sampleX.scores.tab 每个文件的“sampleX”都不同。因此有: sample1.features.tab sample1.scores.tab sample2.features.tab sample2.scores.tab sample3.features.tab sample3.scores.tab 所有文件的行数相同 我想从每个.feature

我有一个文件夹,大约有1000个以制表符分隔的文本文件。 我的文件的一半称为sampleX.features.tab,另一半称为sampleX.scores.tab

每个文件的“sampleX”都不同。因此有:

sample1.features.tab
sample1.scores.tab
sample2.features.tab
sample2.scores.tab
sample3.features.tab
sample3.scores.tab
所有文件的行数相同

我想从每个.features.tab中提取一些列

cut -f1,5,9,10,19,20
我想从每个.scores.tab中提取两列

cut -f1,7
然后我想将所有这些列合并到一个名为“sampleX.final.tab”的新文件中(因此sample1.final.tab、sample2.final.tab,…)


这就是我被困的地方。在Linux中如何将这些东西连接在一起?

一种方法是将剪切文件的输出连接到管道中:

cut -f1,5,9,10,19,20 sample1.features.tab > features1
cut -f1,7 sample1.scores.tab > scores1
然后通过以下方式将它们粘贴在一起:

paste features1 scores1
对1000个文件执行此操作时,我会编写一个脚本,循环遍历文件名

更新:上面的解决方案可能是最容易记住的(有点直观)。但是,如果需要动态组合来自不同文件的列(例如,当使用gnuplot打印时),用户liborn的答案是有效的,即

paste <( cut -f... file1 ) <( cut -f... file 2)

粘贴一种方法是通过管道将剪切输出到文件中:

cut -f1,5,9,10,19,20 sample1.features.tab > features1
cut -f1,7 sample1.scores.tab > scores1
然后通过以下方式将它们粘贴在一起:

paste features1 scores1
对1000个文件执行此操作时,我会编写一个脚本,循环遍历文件名

更新:上面的解决方案可能是最容易记住的(有点直观)。但是,如果需要动态组合来自不同文件的列(例如,当使用gnuplot打印时),用户liborn的答案是有效的,即

paste <( cut -f... file1 ) <( cut -f... file 2)

粘贴一种方法是通过管道将剪切输出到文件中:

cut -f1,5,9,10,19,20 sample1.features.tab > features1
cut -f1,7 sample1.scores.tab > scores1
然后通过以下方式将它们粘贴在一起:

paste features1 scores1
对1000个文件执行此操作时,我会编写一个脚本,循环遍历文件名

更新:上面的解决方案可能是最容易记住的(有点直观)。但是,如果需要动态组合来自不同文件的列(例如,当使用gnuplot打印时),用户liborn的答案是有效的,即

paste <( cut -f... file1 ) <( cut -f... file 2)

粘贴一种方法是通过管道将剪切输出到文件中:

cut -f1,5,9,10,19,20 sample1.features.tab > features1
cut -f1,7 sample1.scores.tab > scores1
然后通过以下方式将它们粘贴在一起:

paste features1 scores1
对1000个文件执行此操作时,我会编写一个脚本,循环遍历文件名

更新:上面的解决方案可能是最容易记住的(有点直观)。但是,如果需要动态组合来自不同文件的列(例如,当使用gnuplot打印时),用户liborn的答案是有效的,即

paste <( cut -f... file1 ) <( cut -f... file 2)

paste这里有一个
awk
脚本来执行此操作(注意每对文件都需要放入内存):


这里有一个
awk
脚本来执行此操作(注意,每对文件都需要放入内存中):


这里有一个
awk
脚本来执行此操作(注意,每对文件都需要放入内存中):


这里有一个
awk
脚本来执行此操作(注意,每对文件都需要放入内存中):

你在找我。在Bash中,您可以执行以下操作:

paste \
  <( cut -f1,5,9,10,19,20 sample1.features.tab )\
  <( cut -f1,7 sample1.scores.tab )\
> sample1.out
粘贴\
你在找我。在Bash中,您可以执行以下操作:

paste \
  <( cut -f1,5,9,10,19,20 sample1.features.tab )\
  <( cut -f1,7 sample1.scores.tab )\
> sample1.out
粘贴\
你在找我。在Bash中,您可以执行以下操作:

paste \
  <( cut -f1,5,9,10,19,20 sample1.features.tab )\
  <( cut -f1,7 sample1.scores.tab )\
> sample1.out
粘贴\
你在找我。在Bash中,您可以执行以下操作:

paste \
  <( cut -f1,5,9,10,19,20 sample1.features.tab )\
  <( cut -f1,7 sample1.scores.tab )\
> sample1.out
粘贴\


如何将
功能
分数
组合成
最终
功能中的一行是否对应于
分数中的一行?是的,确实如此。如何将
功能
分数
组合成
最终
功能中的一行是否对应于
分数中的一行?是的,确实如此。如何将
功能
分数
组合成
最终
功能中的一行是否对应于
分数中的一行?是的,确实如此。如何将
功能
分数
组合成
最终
功能
中的一行是否与
分数
中的一行相对应?是的,确实如此。你以分钟击败我:)你以分钟击败我:)你以分钟击败我:)你以分钟击败我:)虽然这在文件名中有空格的问题,但这是一个很好的解决方案。我的目标是“语法”的最低子集,可以解决OP的问题问题“为简洁起见省略引号。”;)虽然这在文件名中有空格的问题,但这是一个很好的解决方案。我的目标是找到解决OP问题的“语法”的最低子集。“为简洁起见省略引号。”;)虽然这在文件名中有空格的问题,但这是一个很好的解决方案。我的目标是找到解决OP问题的“语法”的最低子集。“为简洁起见省略引号。”;)虽然这在文件名中有空格的问题,但这是一个很好的解决方案。我的目标是找到解决OP问题的“语法”的最低子集。“为简洁起见省略引号。”;)