有条件地提取列

安娜1364

我有大量文件(3300),这是我的基因组扫描输出的结果,anacovis2_1_summary_betai_reg.out ... anacovis2_3300_summary_betai_reg.out每个文件看起来都像这样(仅几行):

 1    4996     0.03907811     0.19369659   -10.43580084     0.00150707     0.00836902     0.06697258
  1    4997     0.06213154     0.17373333   -10.98540609     0.00213014     0.00556877     0.15361369
  1    4998    -0.00284978     0.19418451    -8.81547738     0.00016505     0.00741737     0.00777931
  1    4999    -0.02047544     0.19574268    -9.12692867    -0.00059062     0.00632552     0.03357265
  1    5000    -0.01769435     0.18560835   -13.15854481    -0.00038595     0.00540918     0.02543350
  2       1     0.04259550     0.20256840   -10.98339784     0.00120126     0.00529516     0.08590396
  2       2    -0.10782050     0.17555969    -9.13783036    -0.00355861     0.00689091     0.21784244
  2       3     0.02548854     0.18571440   -15.42307129     0.00006131     0.00291038     0.00736142
  2       4     0.03084782     0.17813247   -11.99911720     0.00109688     0.00630034     0.06459986

第一列是环境变量,范围是1到26。我想遍历每个文件,仅提取每个环境变量的第四列,然后将它们保存在带有环境变量编号后缀的文件中。

我知道如何分别为每个环境变量(例如变量1)执行此操作

awk '($1==1){print $4>FILENAME"_env1"}'anacovis2_{1..3300}_summary_betai_reg.out

或对于变量2

awk '($1==2){print $4>FILENAME"_env2"}'anacovis2_{1..3300}_summary_betai_reg.out

但是如果我想这样做需要花费时间,例如,我想知道是否可以更快地循环执行。我尝试过这样的事情

for i in {1..26};
do awk '($1==i){print $4>FILENAME"_i"}'anacovis2_{1..3300}_summary_betai_reg.out
done

但是没有用!有人可以帮我解决这个问题吗?谢谢

αғsнιη

就在这里。以这种方式awk仅对自身执行此操作

awk '{print $4>FILENAME"_env"$1}' anacovis2_{1..3300}_summary_betai_reg.out

要将所有文件中的每个相同的env保存到同一个文件(例如env1,env2等)中,只需将其放在FILENAME其中并使用即可运行命令{print $4>"env"$1}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章