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

转载于:https://www.cnblogs.com/skylinelzy/p/3908001.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值