编者按:
在金庸武学体系的众多武功之中,独孤九剑并不是最强劲的武功,它与其他武林绝学有很大的不同,可以说是鹤立鸡群。比如乔峰的降龙十八掌,段誉的六脉神剑,张无忌的九阳神功,石破天的罗汉伏魔神功,这些神功都需要强大的内力支撑,而独孤九剑则不同,不需要内力,这点其实可以从华山派气宗与剑宗的分歧就可以看出来。独孤九剑传人风清扬属于剑宗,更注重招式,而不是像剑宗注重练气。独孤九剑分为总诀式,破剑式,破刀式,破枪式,破鞭式,破索式,破箭式,破掌式,破气式,遇到不同的场景使用关不同的招式,因此,独孤九剑更加注重问题的解决,本质上就是就是通过工具来解决问题。只要学会这九剑,就可以处理很多的问题。学习生物信息也是同样的道理,当然练好内功,掌握很好的基础是非常必要的,但是也可以学习一些小工具,解决一些实际问题。那么从这次内容开始,我们就来给大家介绍生物信息之独孤九剑。
perl有一个非常大的好处就是支持单行模式。类似于awk和sed的模式。很多时候我们一些perl程序是随手就丢掉了,也就是写完之后就丢掉。可以把perl程序全部放在命令行上。这样就无需再写到一个文件中保存下来而直接在命令行运行就可以。对于大型的,较长久的工作,可以把perl脚本当做一个独立的文件使用。perl是非常优秀的脚本语言。熟练掌握当行perl的技巧,会极大的提高效率。许多awk和sed、grep和sort可以完成的功能,单行的perl的都可以完成,而且有时候比单独使用这些命令更加方便。
案例一:命令行模式perl;
perl -e “print ”hello,world\n”;
案例二:while循环;
-n是自动循环,相当于 while(<>) { 脚本; };
perl -ne ‘{chomp;print “$_\n”;}’ test.txt #使用-ne来都读取这个文件,并将其一行行打印出来。这个相当于cat的功能了。
案例三:替换模式,相当于sed功能;
perl -p -e ‘s/scaffold_//’ test.txt #将其中的ID行里面的scaffold下划线都替换掉;
perl -p -e -i‘s/scaffold_//’ test.txt #直接在源文件修改,相当于sed -i;
perl -pie ’s/\r\n/\n/g’ test.txt #将换行符\r\n替换成\n,相当于dos2unix命令的功能。
案例四:打印文件的任意行或者任意范围的行,相当于awk功能;
perl -lane ‘print “@F[0…4] $F[6]“‘ file #取出文件的一部分,显示字段0-4和字段6,字段的分隔符是空格;
perl -F: -lane ‘print “@F[0…4]\n”‘ /etc/passwd #修改分隔符为冒号;
案例五:利用正则表达式,输出固定范围行;
perl -ne ‘print if /^START/../END/’ file #打印START和END之间的部分;
perl -ne ‘print unless /^START/../END/’ file #不打印START和END之间的部分;
案例六:显示开头50行,相当于head;
perl -pe ‘exit if $. > 50′ file #输出文件前50行,相当于head的功能;
perl -ne ‘print if 15 … 17′ file #显示15行到17行,相当于head,管道与tail;
如果要丢弃模式内的,将if切换成unless即可。
案例七:提取固定字符;
perl -lne ‘print substr($_, 0, 80) = “”‘ file #去除每行前80个字符;
案例八:搜索功能,相当于grep功能;
perl -ne ‘print if /comment/’ duptext #查找固定模式的字符串:
perl -ne ‘print unless /comment/’ duptext #查找不含comment字符串的行,相当于grep -v;
案例九:排序;
perl -e ‘print sort <>’ #file #文件按行排序;
perl -00 -e ‘print sort <>’ #file #文件按段落排序;
perl -0777 -e ‘print sort <>’ file1 file2 #多个文件按文件内容排序,并返回合并后的文件:
案例十:文件按行反转
perl -e ‘print reverse <>’ file1 #文件按行翻转;
欢迎订阅我们的微信公众号:基因学苑