Perl命令行常见用法及技巧
作者:懒人运维 来源: 懒人运维

 

替换

将所有C程序中的foo替换成bar,旧文件备份成.bak

perl -p -i.bak -e ’s/\bfoo\b/bar/g’ *.c

很强大的功能,特别是在大程序中做重构。记得只有在UltraEdit用过。 如果你不想备份,就直接写成 perl -p -i -e 或者更简单 perl -pie, 恩,pie这个单词不错

将每个文件中出现的数值都加一

perl -i.bak -pe ’s/(\d+)/ 1 + $1 /ge’ file1 file2 ….

将换行符\r\n替换成\n

perl -pie ’s/\r\n/\n/g’ file

同dos2unix命令。

将换行符\n替换成\r\n

perl -pie ’s/\n/\r\n/g’ file

同unix2dos命令。

取出文件的一部分

显示字段0-4和字段6,字段的分隔符是空格

perl -lane ‘print “@F[0..4] $F[6]“‘ file

很好很强大,同 awk ‘print $1, $2, $3, $4, $5, $7′。参数名称lane也很好记。

如果字段分隔符不是空格而是冒号,则用

perl -F: -lane ‘print “@F[0..4]\n”‘ /etc/passwd

显示START和END之间的部分

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

恐怕这个操作只有sed才做得到了吧……

相反,不显示START和END之间的部分

perl -ne ‘print unless /^START$/ .. /^END$/’ file

显示开头50行:

perl -pe ‘exit if $. > 50′ file

同命令 head -n 50

不显示开头10行:

perl -ne ‘print unless 1 .. 10′ file

显示15行到17行:

perl -ne ‘print if 15 .. 17′ file

每行取前80个字符:

perl -lne ‘print substr($_, 0, 80) = “”‘ file

每行丢弃前10个字符:

perl -lne ‘print substr($_, 10) = “”‘ file

搜索

查找comment字符串:

perl -ne ‘print if /comment/’ duptext

这个就是普通的grep命令了。

查找不含comment字符串的行:

perl -ne ‘print unless /comment/’ duptext

反向的grep,即grep -v。

查找包含comment或apple的行:

perl -ne ‘print if /comment/ || /apple/’ duptext

相同的功能就要用到egrep了,语法比较复杂,我不会……

计算

计算字段4和倒数第二字段之和:

perl -lane ‘print $F[4] + $F[-2]‘

要是用awk,就得写成 awk ‘{i=NF-1;print $5+$i}’

排序和反转

文件按行排序:

perl -e ‘print sort <>’ file

相当于简单的sort命令。

文件按段落排序:

perl -00 -e ‘print sort <>’ file

多个文件按文件内容排序,并返回合并后的文件:

perl -0777 -e ‘print sort <>’ file1 file2

文件按行反转:

perl -e ‘print reverse <>’ file1

相应的命令有吗?有……不过挺偏,tac(cat的反转)

数值计算

10进制转16进制:

perl -ne ‘printf “%x\n”,$_’

10进制转8进制: perl -ne ‘printf “%o\n”,$_’

16进制转10进制:

perl -ne ‘print hex($_).”\n”‘

8进制转10进制:

perl -ne ‘print oct($_).”\n”‘

简易计算器。

perl -ne ‘print eval($_).”\n”‘

其他

启动交互式perl:

perl -de 1

查看包含路径的内容:

perl -le ‘print for @INC’

备注

与One-Liner相关的Perl命令行参数:

-0<数字>

(用 8进制表示)指定记录分隔符($/变量),默认为换行

-00

段落模式,即以连续换行为分隔符

-0777

禁用分隔符,即将整个文件作为一个记录

-a

自动分隔模式,用空格分隔$_并保存到@F中。相当于@F = split ”。分隔符可以使用-F参数指定

-F

指定-a的分隔符,可以使用正则表达式

-e

执行指定的脚本。

-i<扩展名>

原地替换文件,并将旧文件用指定的扩展名备份。不指定扩展名则不备份。

-l

对输入内容自动chomp,对输出内容自动添加换行

-n

自动循环,相当于 while(<>) { 脚本; }

-p

自动循环+自动输出,相当于 while(<>) { 脚本; print; }

转载于:https://www.cnblogs.com/air-of-code/p/5990436.html

Perl命令行常见用法及技巧相关推荐

  1. linux下perl命令行参数,Perl One-Liners | Perl命令行学习1 -e参数

    注:本内容需要点的perl编程基础,最好是读过<perl语言入门>. 本系列是自己平常学习工作中的总结,每一个实例均为我为了讲解而设置的,自己试过的,如有错误,望能见谅 Perl 命令行参 ...

  2. perl 命令行备注

    参考链接 Perl 常用命令行选项 unix 常用命令 perl 实现 sed awk tr nl perl 和sed,awk,tr,grep,nl等常用命令替换 sed task sed perl ...

  3. mysql命令行的一些小技巧

    mysql命令行的一些小技巧 1.以html格式输出结果 使用mysql客户端的参数–html或者-T,则所有SQL的查询结果会自动生成为html的table代码 $ mysql -uroot --h ...

  4. ftp命令行登陆 用法指南

    转载:ftp命令行登陆 用法指南 1. ftp open *.*.*.* 这时会提示输入用户名和密码,输入完即可登陆. 可以用 dir或者ls命令查看当前目录内容 可以用 ascii或者binary改 ...

  5. 好压(HaoZip)的命令行模式用法介绍-转载

    转载自http://www.cnblogs.com/fetty/p/4859670.html 好压(HaoZip)的命令行模式用法介绍 好压压缩软件,又叫"2345好压",是一款国 ...

  6. Perl命令行应用介绍

    作 者: Dave Cross 发 表:August 10, 2004 原 名: Perl Command-Line Options 原 文:http://www.perl.com/pub/a/200 ...

  7. dig命令的常见用法详解

    CATALOG 什么是dig 一个查询的例子 常见用法 什么是dig dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活的工具.它执行 DNS 搜索,显示从受请求的域名服务器返回的答复 ...

  8. Bash命令行历史用法【转】

    原文:http://tech.idv2.com/2007/03/27/bash-history-summary/ 便总结一下bash命令行历史的用法: history: 命令查看以前用过的命令行列表. ...

  9. @ARGV:perl命令行参数

    当perl脚本运行时,从命令行上传递给它的参数存储在内建数组@ARGV中,@ARGV是PERL默认用来接收参数的数组,可以有多个参数,$ARGV[0]是表示接收到的第一个参数,$ARGV[1]表示第二 ...

最新文章

  1. 切换目录命令 - cd
  2. String hashCode 方法为什么选择数字31作为乘子
  3. HTTPS|SSL笔记-SSL双向认证失败(服务端证书信任库不含客户端证书)握手过程(含wireshark分析)
  4. 【设计模式系列】行为型之模板模式
  5. Flink : The object probably contains or references non-serializable fields.
  6. 如何用Python实现目录遍历
  7. LSTM+attention代码原理详解
  8. 用c语言编写清理c盘程序,C盘清理小程序制作
  9. IV值和WOE值的理解
  10. 【验证码识别】OpenCV挑战极验滑动拼图验证码
  11. Spring中AOP的实现原理
  12. 2021-2027全球及中国油田钻机行业研究及十四五规划分析报告
  13. 解析互联网广告术语 CPM、CPC、CPA、CPS、CPL、CPR 是什么意思
  14. SUCCEEDED 和 FAILED的作用和用法
  15. 11 种主要神经网络结构图解
  16. Linux配置定时任务
  17. PLSQL Developer13.0.4安装破解教程
  18. [2013百度软件研发笔试题] 求字符串中连续出现同样字符的最大值
  19. 用python计算整数各位数字之和
  20. 华为服务器命名规则及型号分类

热门文章

  1. 书法是什么?书法的美从何说起?
  2. 高三了,一模距本科线还差22,英语才28,怎么办啊
  3. 聪明女人的七个致富之道,学会它你也能成为人人羡慕的小富婆
  4. 互联网裁员屡见不鲜,但有时互联网的裁员却不太体面
  5. 何时使用 Golang
  6. 如果苹果公司允许其他手机厂商使用iOS系统,对苹果公司来说会有什么好处?
  7. Even better, if you don’t want to answer and
  8. 数据交换-电路/报文/分组交换
  9. MySql字符串截取之substring_index
  10. sql中join类型_SQL Join类型概述和教程