1

我使用以下代码从文本文件中提取蛋白质残基。

awk '{
if (FNR == 1 ) print ">" FILENAME  
if ($5 == 1 && $4 > 30) {
printf $3
 }
}
END { printf "\n"}'  protein/*.txt > seq.txt

当我使用上面的代码时,我得到了以下输出。

>1abd
MDEKRRAQHNEVERRRRDKINNWIVQLSKIIPDSSMESTKSGQSKGGILSKASDYIQELRQSNHR>1axc
RQTSMTDFYHSKRRLIFS>1bxc
RQTSMTDFYHSKRRLIFSPRR>1axF
RQTSMTDFYHSKRR>1qqt
ARPYQGVRVKEPVKELLRRKRG

我想得到如下所示的输出。如何更改上面的代码以获得以下输出?

>1abd
MDEKRRAQHNEVERRRRDKINNWIVQLSKIIPDSSMESTKSGQSKGGILSKASDYIQELRQSNHR
>1axc
RQTSMTDFYHSKRRLIFS
>1bxc
RQTSMTDFYHSKRRLIFSPRR
>1axF
RQTSMTDFYHSKRR 
>1qqt
ARPYQGVRVKEPVKELLRRKRG
4

2 回答 2

0

这可能对您有用:

awk '{
if (FNR == 1 ) print newline ">" FILENAME  
    if ($5 == 1 && $4 > 30) {
        newline="\n";
        printf $3
    }
}
END { printf "\n"}'  protein/*.txt > seq.txt
于 2012-10-06T07:30:51.407 回答
0

使用 gawk 版本 4,您可以编写:

gawk '
    BEGINFILE {print ">" FILENAME}
    ($5 == 1 && $4 > 30) {printf "%s",  $3}
    ENDFILE {print ""}
' filename ...

http://www.gnu.org/software/gawk/manual/html_node/BEGINFILE_002fENDFILE.html#BEGINFILE_002fENDFILE

于 2012-10-06T13:13:29.007 回答