e 값에 대해 필터링된 폭발 출력

e 값에 대해 필터링된 폭발 출력

평가 임계값이 1e-3인 SwissProt 데이터베이스에 대해 BlastX를 실행했습니다.

출력은 다음과 같습니다.

>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]번째 열이 생깁니다.

관련 정보