替换
将所有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; }
相关推荐
主要给大家介绍了关于Perl学习教程之单行命令的相关资料,文中给出了详细的示例代码供大家参考学习,对大家学习或者使用perl具有一定的参考学习价值,需要的朋友可以参考借鉴,下面来一起看看吧。
这是一个主要讲perl在命令行上的操作。这个有很强的实用性。
文档包括Linux系统中用 Perl 实现的有用单行程序, 适合用于无法用简单shell语句完成的命令. 包括文本处理, 系统命令, 字符串处理等. 比如: # 判断一个数是否是质数: perl -lne '(1x$_) !~ /^1?$|^(11+?)\1+$/ && ...
Perl5语言命令详解.pdfPerl5语言命令详解.pdfPerl5语言命令详解.pdf
详细介绍perl的调试命令,有了这个,就不用再为perl的调试烦恼了。
Perl 5 语言命令详解版(pdf版,也是影印版)
Perl的用户中,有不少喜欢写单行的Perl 单行Perl更方便 本文是单行Perl的一个基本教程
文档包括Linux系统中用 Perl 实现的有用单行程序, 适合用于无法用简单shell语句完成的命令. 包括文本处理, 系统命令, 字符串处理等. 比如: # 判断一个数是否是质数: perl -lne '(1x$_) !~ /^1?$|^(11+?)\1+$/ && ...
perl常用命令_函数集
perl/tk下的一些常用命令比较简单的介绍了一下,适用于对界面要求不是很高,实现一般功能,分享~
This package implements 'make' in perl. Requires perl5.005 or later as it uses some of new regular expression features. To install perl Makefile.PL perl -I. pmake perl -Mblib pmake test perl -...
perl脚本perl脚本perl脚本perl脚本
和严格的每次执行一条命令的命令文件和 shell 脚本不同的是,Perl 先把你的程序快速编译成一种内部格式。和其它任何编译器一样,这个时候还进行各种优化,同时把碰到的任何问题反馈给你。一旦 Perl 的编译器前端对你...
一些基本的CD命令, 适合新手……
Perl命令行参数的使用你是否了解,Perl有很多Perl命令行参数.通过它可以让你的程序更简练,并且可以写出很多只有一行命令的perl.在这篇文章里我们来了解一些常用的Perl命令行参数,能达到awk的效果.
NULL 博文链接:https://fruitking.iteye.com/blog/799757
windows Strawberry Perl 5.32最新版本 ,适合调试 perl windows Strawberry Perl 5.32最新版本 ,适合调试 perl windows Strawberry Perl 5.32最新版本 ,适合调试 perl windows Strawberry Perl 5.32最新版本 ...
PERL编写的服务器响应时间(ping)测试,生成html文件,图形显示。$hostList[]方便测试任何服务器。
Perl之读取文本文件,按照给定的关键字读取文件内容并输出。