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

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的强大之处在于其简洁性和灵活性,使得即使是复杂的任务也能通过简单的命令行指令完成。此外,Perl社区提供了丰富的资源和支持,帮助开发者更好地利用这一强大的工具。

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

    ### 使用Perl实现的一行程序详解 #### 一、概述 本文档主要介绍在Linux系统下如何利用Perl语言编写实用的一行脚本。这些脚本能够处理一些简单的任务,特别是那些用传统的Shell命令难以解决的问题。例如,判断一个...

    Perl5语言命令详解.pdf

    这份"Perl5语言命令详解.pdf"文档很可能是全面介绍Perl5语言中各种命令、语法和操作的指南。下面,我们将深入探讨Perl5的一些核心概念和常用命令。 1. **变量**:在Perl5中,变量是用来存储数据的容器,它们以`$`...

    单行Perl教程

    根据给定文件的内容,以下是对单行Perl脚本的基础知识点的详细介绍: ### 单行Perl脚本的概念 单行Perl脚本(Perl one-liners)是一种在命令行上运行的简短Perl代码片段,它们能够完成特定的文本处理或系统管理任务...

    Perl 5 语言命令详解

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

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

    标题 "perl脚本调用练习和调用系统命令并展示输出信息" 提示我们这篇内容主要涉及使用Perl脚本执行系统命令以及如何处理输出信息。Perl是一种强大的文本处理语言,常用于系统管理任务,包括调用其他系统工具或程序。...

    CD命令(学Perl用到)

    CD 命令详解与常用 DOS 命令 CD 命令是 DOS 操作系统中的一种基本命令,用于切换当前目录。CD 命令的使用非常广泛, 在日常的文件管理和文件夹操作中扮演着重要的角色。今天,我们将详细介绍 CD 命令的使用方法和...

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

    ### Perl调试命令详解 在日常开发工作中,Perl作为一种强大的脚本语言被广泛应用于系统管理、Web开发、网络编程等多个领域。然而,就像任何其他编程语言一样,在开发过程中难免会遇到各种问题,这时就需要借助调试...

    perl(windows环境)

    安装过程中,你可以选择安装路径,以及是否将Perl添加到系统的PATH环境变量中,这样在命令行中就可以直接运行perl命令了。 安装完成后,你可以通过命令行(如cmd.exe)测试Perl是否已经正确安装。打开命令提示符,...

    PERL编写的服务器响应时间(ping)测试

    Perl可以调用操作系统内置的ping命令,通过子进程执行并捕获其输出,从而获取服务器的响应时间数据。 描述中提到的"生成html文件,图形显示"意味着Perl脚本会使用一些库,如GD或Chart::Graph,来创建图表。GD是Perl...

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

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

    linux 下安装perl的详细过程

    安装完成后,可以通过执行`perl -v`命令来验证Perl是否安装成功及其版本信息。 ```bash # 验证Perl安装 perl -v ``` #### 其他注意事项 - 在配置阶段,可能会根据实际需求调整`Configure`脚本的参数,例如指定安装...

    perl/tk常用命令

    通过阅读`perl_tk1.pdf`, `perl_tk2.pdf`, 和`perl_tk3.pdf`,你可以深入了解更多的命令和实践示例,进一步提升Perl/Tk编程技能。记得实践中不断探索和实验,以更好地理解和掌握这个强大的工具包。

    perl常用命令_函数集.pdf

    Perl 常用命令_函数集 Perl 是一种功能强大且灵活的编程语言,提供了许多实用的命令和函数来帮助开发者进行开发。下面将对 Perl 常用命令_函数集进行详细的解释和总结。 一、进程处理函数 进程处理函数是 Perl 中...

    perl 命令行模式

    1. **正则表达式**:Perl是正则表达式的自然之选,它的语法强大且灵活。在命令行中,你可以使用`-p`和`-n`选项来逐行读取文件,并使用正则表达式进行匹配和替换。 2. **命令行开关**:Perl允许使用各种开关来改变其...

    Perl-5.10.0版本

    Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0...

    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 -...

    linux yum离线资源离线资源perl-5.26.1

    `perl`是一种通用的、高级的、解释型的、动态的编程语言,广泛应用于系统管理、网络编程、Web开发等领域。`perl-5.26.1`指的是Perl编程语言的5.26.1版本。在这个离线资源包中,我们重点关注的是如何在没有网络的情况...

    PERL语言编程

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

Global site tag (gtag.js) - Google Analytics