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}‘
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
linux awk常用操作(快速将fasta格式的序列改成一行显示),布布扣,bubuko.com
linux awk常用操作(快速将fasta格式的序列改成一行显示)
原文:http://www.cnblogs.com/skylinelzy/p/3908001.html