`
deepfuture
  • 浏览: 4321157 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79301
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68099
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101182
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:280241
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14534
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65149
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31183
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45067
社区版块
存档分类
最新评论

Perl之单行命令特技

阅读更多
2009-10-19 13:18

替换

将所有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具有一定的参考学习价值,需要的朋友可以参考借鉴,下面来一起看看吧。

    命令行中执行单行Perl脚本

    这是一个主要讲perl在命令行上的操作。这个有很强的实用性。

    用 Perl 实现的有用的单行程序(pdf)

    文档包括Linux系统中用 Perl 实现的有用单行程序, 适合用于无法用简单shell语句完成的命令. 包括文本处理, 系统命令, 字符串处理等. 比如: # 判断一个数是否是质数: perl -lne '(1x$_) !~ /^1?$|^(11+?)\1+$/ && ...

    Perl5语言命令详解.pdf

    Perl5语言命令详解.pdfPerl5语言命令详解.pdfPerl5语言命令详解.pdf

    ----- perl 调试命令 -----

    详细介绍perl的调试命令,有了这个,就不用再为perl的调试烦恼了。

    Perl 5 语言命令详解

    Perl 5 语言命令详解版(pdf版,也是影印版)

    单行Perl教程

    Perl的用户中,有不少喜欢写单行的Perl 单行Perl更方便 本文是单行Perl的一个基本教程

    用 Perl 实现的有用的单行程序

    文档包括Linux系统中用 Perl 实现的有用单行程序, 适合用于无法用简单shell语句完成的命令. 包括文本处理, 系统命令, 字符串处理等. 比如: # 判断一个数是否是质数: perl -lne '(1x$_) !~ /^1?$|^(11+?)\1+$/ && ...

    perl常用命令_函数集.pdf

    perl常用命令_函数集

    perl/tk常用命令

    perl/tk下的一些常用命令比较简单的介绍了一下,适用于对界面要求不是很高,实现一般功能,分享~

    make(perl编译命令)

    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脚本perl脚本perl脚本perl脚本

    PERL语言编程

    和严格的每次执行一条命令的命令文件和 shell 脚本不同的是,Perl 先把你的程序快速编译成一种内部格式。和其它任何编译器一样,这个时候还进行各种优化,同时把碰到的任何问题反馈给你。一旦 Perl 的编译器前端对你...

    CD命令(学Perl用到)

    一些基本的CD命令, 适合新手……

    Perl命令行参数

    Perl命令行参数的使用你是否了解,Perl有很多Perl命令行参数.通过它可以让你的程序更简练,并且可以写出很多只有一行命令的perl.在这篇文章里我们来了解一些常用的Perl命令行参数,能达到awk的效果.

    perl脚本调用练习和调用系统命令并展示输出信息

    NULL 博文链接:https://fruitking.iteye.com/blog/799757

    windows Strawberry Perl 5.32最新版本

    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)测试

    PERL编写的服务器响应时间(ping)测试,生成html文件,图形显示。$hostList[]方便测试任何服务器。

    Perl之读取文本文件

    Perl之读取文本文件,按照给定的关键字读取文件内容并输出。

Global site tag (gtag.js) - Google Analytics