linux awk常用操作(快速將fasta格式的序列改成一行顯示)


Some time when you want to change the fasta seq into one line

For awk:

        awk '/^>/&&NR>1{print "";}{ printf "%s",/^>/ ? $0" ":$0 }'  YourFile > newfilename

For sed:

            sed -n '1{x;d;x};${H;x;s/\n/ /1;s/\n//g;p;b};/^>/{x;s/\n/ /1;s/\n//g;p;b};H' YourFile > newfilename

Today, I want to extract contig which is more 500bp from my aseembly result, So I do that as following:

            sed -n '1{x;d;x};${H;x;s/\n/ /1;s/\n//g;p;b};/^>/{x;s/\n/ /1;s/\n//g;p;b};H' |awk '{if (length($5)>500 ) print ">contig-"FNR"\n"$5}'

awk行號常用操作:

1. 每行間加一個空行:

                          awk '1; { print "" }'   filname.ext             #輸出當前行,在輸出一個空行

2.計算行數:效果類似wc -l:

                          awk 'END { print NR }'   filname.ext            #END表示每行都處理完了后,在執行,此時NR就是最后一行的行號,也就是總的行數了

3.計算每一行的和:

                          awk '{ s = 0; for (i = 1; i <= NF; i++) s = s+$i; print s }'   filname.ext 

4.計算文件中所有字段的和:

                         awk '{ for (i = 1; i <= NF; i++) s = s+$i }; END { print s }'   filname.ext  #s用作總和的累加,每行都處理完成了,再輸出s;注意和

                對比,此處沒有每行清零,所以累加了。沒有設置的變量,默認為空,但是會根據上下文數值計算情況自動變為0

5.計算文件中總的字段和(例如計算單詞數):

                         awk '{ total = total + NF }; END { print total }'   filname.ext

原文鏈接:http://www.plob.org/2011/03/18/97.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM