小动作之perl命令行

Posted 生信人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小动作之perl命令行相关的知识,希望对你有一定的参考价值。

首先说一下题目的含义,所谓小动作,就是指处理一些简单的问题。但是问题虽简单,但可能没有可用常见的Linux命令或者一些高级的复杂的Linux命令没有掌握(如awk,sed),导致不得不大动手脚,打开编辑器,开始写代码解决此问题。这就有点雷大雨小的感觉了。

那么怎么快速简单的解决这些小动作呢?其实还是离不了命令行,只不过这里是perl的命令行。习惯写perl的人,对perl的语言可能了解更多,学会了命令行,以后恐怕复杂的Linux命令可能就不用再去学习了。废话不多说,看看规则吧:

Perl命令行参数

执行控制

-e           可以让Perl程序在Perl命令行上运行.

-M         导入模块

-I            指定目录以搜索标准位置前的模块

-w          打开警告

-Mstrict   打开严格编译指示(pragma

-a           将数据分割成名为 @F 的数组,.空格是缺省的分隔符

-F           指定分割时把缺省的分隔符改为你想要的。例如把分离号定为非字符使用\W

-i            在适当的位置编辑文件

-c           进行perl的语法检查,但不执行perl命令

-l            使用-l有两个效果,第一自动chomp输入分隔号,第二把$/值付给$\(这样print的时候就会自动在末尾加\n)

-n      使用<>将所有@ARGV参数当作文件来逐行遍历运行,每一行将缺省保存在$_。相当于 while(<>;){  }

-p         使 Perl 隐式地循环遍历指定的文件,同时打印所有的行。自动循环+自动输出,相当于 while(<>) { 脚本; print; }

-C

这个参数编译Perl程序但不会真正运行它.由此检查所有语法错误.每次修改perl程序之后我都会立刻使用它来找到任何语法错误.

-W

它会提示你任何潜在的问题.Perl5.6.0之后的版本已经用usewarnings;替换了-w.你应该使用usewarnings因为它要比-w更灵活.

-M

可以象通常一样引用模块

$perl-MLWP::Simple-e'getstore("http://www.163.com/","163.html")'##下载整个网页

-M+模块名和use模块名一样

 

以下是一些常用的简单实例

#perl -pi–e ’s/aaa/bbb/’ filename

将文件中aaa替换成bbb,不生成中间文件。记住-i开关为原地编辑文件。

#perl -ne‘print if /^aaaaa/’ filename

输出首行开始是aaaaa的行,执行的是grep的功能。使用了-n,所以按行操作,直到整个文件读完。

# perl-lane 'print $F[0] + $F[-2]'

将每行的第一个元素和倒数第二个元素和输出;使用-a后,因为-n分行读进来,然后-a给数据分割存储到@F数组。

#perl -ne‘print if /^START$/ .. /^END$/’

打印正则中从$start$end的地方
perl-ne 'print if(15..17)'file

显示15行到17

#perl -ne‘print scalar reverse $_’ test

给文件中的内容反向排序,比如文件中有fukai,就会变成iakuf

perl-lne'printsubstr($_,0,80)='''file

每行取前80个字符:
perl-lne'printsubstr($_,10)=' ''file

每行丢弃前10个字符

使用命令行操作FASTA序列的高级操作见:

 


整理自:

[Perl命令行参数: https://wk.baidu.com/view/48431f0c52ea551810a68765#1]

[Perl命令行应用程序详解_脚本之家: http://m.jb51.net/show/60771]

[perl 命令行: http://blog.sina.cn/dpool/blog/s/blog_45aa70570100t289.html]

欢迎关注生信人


以上是关于小动作之perl命令行的主要内容,如果未能解决你的问题,请参考以下文章

使用 MXMLC 从命令行编译动作脚本

Linux常用基本命令:三剑客命令之-awk动作用法

Linux常用基本命令:三剑客命令之-awk格式化动作

动作命令在文档中的移动

是否可以从动作脚本运行终端命令?

Linux运维正则表达式之sed