改变awk输出的外观

时间:2012-10-06 05:38:45

标签: awk

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

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

2 个答案:

答案 0 :(得分:0)

这可能对您有用:

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

答案 1 :(得分: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