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

本文介绍使用sed和awk进行文本处理的方法,包括将多行文本合并为单行、提取超过500bp的contig序列等实用技巧,并提供了具体的命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值