我针对 SwissProt 数据库运行了 BlastX,评估阈值为 1e-3。
输出看起来像:
>TCONS_00006082 sp|P43298|TMK1_ARATH 57.89 57 23 2 459 292 751 806 8e-11 67.4
>TCONS_00006082 sp|P0DH62|Y4407_SELML 69.05 42 12 1 435 313 373 414 1e-08 60.1
>TCONS_00006082 sp|Q8RWZ5|SD25_ARATH 56.52 46 19 1 435 301 659 704 1e-08 60.1
>TCONS_00006082 sp|Q8VYA3|WAKLJ_ARATH 41.43 70 40 1 477 271 586 655 5e-08 58.2
>TCONS_00006082 sp|Q9C9L5|WAKLH_ARATH 40.00 70 41 1 477 271 600 669 5e-08 58.2
>TCONS_00006082 sp|P93749|Y2197_ARATH 40.54 74 43 2 501 283 225 297 6e-08 57.8
>TCONS_00006082 sp|Q9M342|WAKLP_ARATH 34.52 84 54 2 519 271 504 580 6e-08 57.8
现在,我想用 e 值(字段 11)> 0.001 来过滤这些 ID。我怎样才能做到这一点?
答案1
你可以简单地使用awk
,我想第 11 个字段就是你想要的值:
awk '$11>0.001{print $0}' file
awk
如果陈述正确,则理解科学记数法并打印整行。
注意:从问题的输出来看,没有任何行符合 >0.001 的标准,因此不会打印任何行。相反,您可以按如下方式测试它:
awk '$11>0.00000001{print $0}' file
应打印 4 行。
答案2
如果你想要 perl 的解决方案,
perl -lane 'print $_ if ($F[10] >0.001)' file
-a
自动分割每个输入行并将列存储在数组中@F
,并且$F[0]
将具有第一列。