Perl命令行使用的技巧.doc_第1页
Perl命令行使用的技巧.doc_第2页
Perl命令行使用的技巧.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Perl命令行使用技巧Perl在设计之初就是为了能够整合shell、awk、sed、sort、grep等工具的目的而出现的,我们习惯在unix/linux下使用系统为我们提供的一系列优秀的工具进行文本处理、文件管理,那是便捷并且是可行的。但是在windows下我们在日常办公过程中,如果需要进行比较复杂的文本处理,是否必须把文本粘贴到linux下,用我们习惯的方式进行处理,或者是使用ultraedit、word之类的工具想其他办法处理呢?如果你熟悉perl的话,那么只需要安装perl的win32版本,unix下常规的awk、sed、grep、sort等工具的功能是完全可以实现的。并且只要掌握以下的一些方法,所有的文本处理都可以放在一个perl解释器进程中完成,不需要另外调用awk或sed等,减少了shell与awk数据传递的麻烦。下面我就简单的举几个例子进行说明:1. 一个命令行模拟awk:# 将第一列和倒数第二列相加# 等同awk脚本: awk i = NF - 1; print $1 + $iperl -lane print $F0 + $F-2举例1:如果有文件 raytest.txt1 2 3 45 6 7 8使用命令行:perl -lane print $F0 + $F-2 raytest.txt执行后结果为:412简要说明:l -l 参数是在打印每一行运算结果后加上行结束符(默认为换行符),如果没有此参数,上例的输出就会是:412l -a 与-n参数一起使用时开启类似awk的自动分割输入行的功能,默认使用空格或tab分割,可以使用-F参数指定分割符。分割的内容放入特定的数组F。l -n 参数开启按行读取的功能,类似awk的方式一行行从文件中读取l -e 参数将后边的串内容作为perl代码处理2. 打印文件中的一系列行:a) 打印行号范围内的内容:# 打印文件中15到17行的内容perl -ne print if $. = 15; exit if $. = 17;# 或者更为简单perl -ne print if 15 . 17简要说明:l $. 为perl中的默认变量,存储当前的行号,与awk中的NR意义相同。l 15.17表示范围,“.”操作符指示范围l 默认读入的行放置在$_中,print的默认处理对象也是$_b) 打印文件中配对标识之中的内容:# 打印文件中行内容为“BEGIN”和“END”之间的行内容perl ne print if /BEGIN$/./END$/简要说明:l /是指示使用正则表达式,这里标识一行中只有BEGIN或END的行。正则表达式默认匹配$_。3. sed的功能,文件编辑:a) 在线替换文件中特定内容# 将所有.c文件中的“ray”替换为“pac”,并且将源文件备份为.bakperl -p -i.bak -e s/brayb/pac/g *.c简要说明:l -i 参数表示原地修改文件(同sed中的-i),如果提供可选参数,则使用它为后缀建立源文件备份。l -p 参数基本同-n 参数,只是在处理完成后插入一条print,将处理结果打印出来,同sed的行为l 正则表达式中b匹配单词边界,b) 删除文件中的特定行:# 删除文件中的前10行:perl ne i.old print unless 1 . 10 ray.txtc) 处理文件中的数字:# 将.c和.h文件中所有的数字全部加一:perl -i.tiny -pe s/(d+)/ 1 + $1 /ge *.ch简要说明:l 正则表达式中d+代表匹配数字(长度不限),$1是指前边的第一个表达式所匹配上的内容d) 在正则表达式中进行运算:# 将文本中所有的“ray”用小于611的随机数替代perl i.bak pe “s/ray/int rand(611)/ge” *.txt简要说明:l 正则表达式中的int rand(611)是指取小于611的随机数,并取整l 正则表达式的命令字/e表示此表达式中有需要perl来处理的语句,并且将处理结果作为表达式内容e) 在文件中插入4位数字的行号:perl i.bak -pe$_ = sprintf %04d %s, $., $_ ray.txt4. 文件管理功能:a) 批量文件重命名:# 将所有.txt文件的首字母修改为大写ls *.txt | perl ne chomp;printf “mv $_ %s”, ucfirst $_”或者直接:ls *.txt | perl ne chomp;rename $_, ucfirst $_”简要说明:l 第一个表达式只是打印对应的shell命令,需要使用者获得输出然后执行l 第二个表达式直接调用perl的rename函数,对文件重命名后记:仔细研究perl,可以为我们的运维工作带来很多方便,单行的perl指令往往比调用awk、sed更为方便快捷。下面是perl的一些命令行参数列表,供大家参考:整洁性 -w打开警告-Mstrict打开严格编译指示(pragma)数据 -0(这是个零)指定输入记录分隔符-a将数据分割成名为 F 的数组-F指定分割时 -a 使用的模式(请参阅 perldoc -f split)-i在适当的位置编辑文件(请参阅 perldoc pe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论