技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> Perl 命令行参数

Perl 命令行参数

浏览:3239次  出处信息

执行控制
-e 指定字符串以作为脚本(多个字符串迭加)执行
-M 导入模块
-I 指定目录以搜索标准位置前的模块

整洁性
-w 打开警告
-Mstrict 打开严格编译指示(pragma)

数据
-0 (这是个零)指定输入记录分隔符
-a 将数据分割成名为 @F 的数组
-F 指定分割时 -a 使用的模式(请参阅 perldoc -f split)
-i 在适当的位置编辑文件(请参阅 perldoc perlrun 以获取大量详细信息)
-c 进行perl的语法检查,但不执行perl命令.
-F 把缺省的分离号改为你想要的.例如把分离号定为非字符
-l 使用 -l 有两个效果,第一自动 chomp 输入分隔号,第二 把$/ 值付给 $\ ( 这样 print 的时候就会自动在末尾加 \n )
-n 使用 <> 将所有 @ARGV 参数当作文件来逐行运行,会将读入的内容隐式的逐一按行来遍历文件.每一行将缺省保存在 $_
-p 和 -n 一样,但是还会打印 $_ 的内容

请注意 -p 开关和 -n 开关的使用。当您想显式打印数据时,使用 -n 开关。 -p 开关隐式地将 print $_ 语句插入到 -n 开关所产生的循环中。因此, -p 开关更适用于对文件进行的 完全处理,而 -n 开关更适用于 选择性文件处理,这样的处理只需打印特定数据。

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

#perl -pi -e’s/aaa/bbb/’ filename 修改当前file文件中的文件,不生成中间文件,速度很快.记住 -i 开关,因为它让你原地编辑文件.
#perl -ne ‘print if /^aaaaa/’ filename 象grep一样过滤文件中需要的内容.这个地方,使用了-n,所以一次是做一行的操作,直到整个文件读完.另外,在管道时,-n也会一样,来遍历管道送过来的内容.
#perl -n -e ‘print “$. - $_”‘ filename 这个例子中的,没用-ne,只是命令写成了-n -e,其实一样,这个例子中,是给当前文件中的内容都加一个行号打印出来.注:$.表示当前行号
#perl -pe ‘$_ = “$. $_”‘ filename 这个其实和上面一样,分别只是使用了-p替换了-n,这个有个什么好处啦,别的地方都一样,但-p按行来遍历完文件后,会给$_打印出来.

大家还记得awk分割域(awk ‘{i = NF - 1; print $1 + $i}’)啊,是不是很方便,下面我们来看看perl
#perl -lane ‘print $F[0] + $F[-2]‘ 这个神奇的地方在于-a,使用-a后.因为-n分行读进来,然后-a给数据分割成@F的数组.
#perl -ne ‘print if /^START$/ .. /^END$/’ 打印正则中从$start到$end的地方
#perl -ne ‘print if $. >= 15; exit if $. >= 17;’ 有效地打印数字范围中的行
#perl -p -i.bak -e ‘s/\bfoo\b/bar/g’ *.c 原地修改 -i 开关的神奇之处在于它对 @ARGV 中的每个文件都用该脚本对该文件输出所产生的文件版本进行替代
#perl -ne ‘print scalar reverse $_’ test 给文件中的内容反向排序,比如文件中有fukai,就会变成iakuf

建议继续学习:

  1. 28个Unix/Linux的命令行神器    (阅读:14919)
  2. 高效Linux用户需要了解的命令行技能    (阅读:11275)
  3. 命令行画图工具gnuplot用法入门    (阅读:10487)
  4. Linux命令行里的“瑞士军刀”    (阅读:10145)
  5. perl更新/修改/删除文本文件内容    (阅读:9437)
  6. perl大牛flw传说    (阅读:6514)
  7. 完全用命令行工作 -- 一年后的思考    (阅读:6064)
  8. perl模块Getopt::Std用法及实例-从命令行读取参数模块    (阅读:5883)
  9. 在命令行快速切换目录    (阅读:5601)
  10. [Perl] Template::Toolkit 模板技术.    (阅读:5368)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1