我有大量文件(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
但是没有用!有人可以帮我解决这个问题吗?谢谢
就在这里。以这种方式awk
仅对自身执行此操作。
awk '{print $4>FILENAME"_env"$1}' anacovis2_{1..3300}_summary_betai_reg.out
要将所有文件中的每个相同的env保存到同一个文件(例如env1,env2等)中,只需将其放在FILENAME
其中并使用即可运行命令{print $4>"env"$1}
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句