首先说一下题目的含义,所谓小动作,就是指处理一些简单的问题。但是问题虽简单,但可能没有可用常见的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的地方 显示15行到17行 #perl -ne‘print scalar reverse $_’ test 给文件中的内容反向排序,比如文件中有fukai,就会变成iakuf perl-lne'printsubstr($_,0,80)='''file 每行取前80个字符: 每行丢弃前10个字符 使用命令行操作FASTA序列的高级操作见: 整理自: [Perl命令行参数: https://wk.b [Perl命令行应用程序详解_脚本之家: http://m.jb5 [perl 命令行: http://blog. |
|