前言

作为一个萌新,最近痴迷于各种一行式脚本,比如sed/grep/awk等,这次来探究下perl一行脚本的几个有趣实例;

关于perl one line的语法规则,直接看这位大神的博客就好:

https://www.cnblogs.com/f-ck-need-u/p/10219326.html

实例中用到的两个test文件内容如下:

实例1:文本替换

perl -pi -e 's/begin/BEGIN/g' test1

作用:类似于sed操作,将文件test1中的begin替换为BEGIN,直接修改原文件;

-pi:等价于-p -i;

-p/-n:使用<>将所有@ARGV参数当作文件来执行,例如例子中的test文件;-n、-p都可以被-e中的while(<>)替代;-p一般会将每一行输出,-n表示禁止默认的输出;

不过在我的Ubuntu系统中,单独使用-p时会输出每一行信息,-pi或者-p -i时未输出;

-i:in-place简称,原地修改文件,-i.tmp则会将原文件另存为原名称.tmp之后再修改原文件;

-e:将其后的字符串作为脚本内容执行,如实例中的's/begin/BEGIN/g';

其他常用符号如-a -F -w请参考前言博客。

实例2:另存原文件之后修改文件

perl -pi.bak -e 's/BEGIN/begin/g' test1

作用:将原文件test1另存为test1.bak,之后修改test1文件将BEGIN替换为begin;

实例3:还是上面的例子,可以结合find一起使用

find ./ -name "test2" | xargs perl -pi.tmp -e "s/begin/BEGIN/g"

实例4:还是进行替换,替换you后面的内容;

perl -p -e 's/(you\s+).*/$1you_rep/g' test2

$1:perl语言中第一组正则匹配()中匹配的内容,在某些系统中可能需要使用\1;

实例5:按行倒叙整个文件;

perl -p -e 'print reverse <>' test1

因为脚本中包含了print,就不要使用-p了;令我不解的是,这种情况下使用-p会导致程序无法退出,一直处于等待状态,求大佬解答;

实例6:按段落(没有空行即一个段落)倒叙整个文件;

perl -00e 'print reverse <>' test1

-00:以段落模式打开文件;

实例7:按字符倒叙整个文件;

perl -0777e 'print scalar reverse <>' test1

-0777一次性读入整个文件;

注意实例5 6 7应避免使用-i,否则你将得到一个空的test1文件;如果想原文件写入,不如使用下 > 吧;

实例8:显示文件3~5行;

perl -ne 'print if 3 .. 5' test1

-n禁止默认的输出,如果想要强制输出,只能在-e表达式中自行指定输出操作,例如print/say/printf。

实例9:显示BEGIN - end之间的内容;

print -ne 'print if /begin/ .. /end/' test1

嗯?最后一个end消失了?根据我之前的测试,https://blog.csdn.net/moon9999/article/details/106484521,最后一个end应该不会消失才对,难道是因为我换了linux系统的原因?

实例10:删除BEGIN END之间的内容;

实例11:在文章开头加一段话;

欢迎添加我的微信~

实例12:在文章结尾加一段话;

注意eof和eof()的区别:前者找的是单一文档的结尾,后者找的是整体执行的结尾;

实例13:在每行开始加行号;

但是同时加两个文件会出问题:

这时候要这么写:

实例14:perl one line同样支持BEGIN块和END块;

【perl脚本】perl one line的几个有趣实例1相关推荐

  1. perl 远程 mysql_写的一个perl脚本,用于发送远程MySQL命令

    想写一些简化管理操作的脚本,下面是基础脚本之一. 对于一个从来没使用过perl脚本的我来说还是有些难度的,直接上代码. 此脚本用于发送远程MySQL命令并且接收结果,功能比较简单,后面会渐渐完善. # ...

  2. perl 远程 mysql_写的一个perl脚本,用于发送远程MySQL命令 -电脑资料

    想写一些简化管理操作的脚本,下面是基础脚本之一, 对于一个从来没使用过perl脚本的我来说还是有些难度的,直接上代码. 此脚本用于发送远程MySQL命令并且接收结果,功能比较简单,后面会渐渐完善. # ...

  3. perl linux 独立运行,Perl脚本打包为独立执行程序

    Linux平台打包Perl脚本为独立运行程序 一.安装打包工具 安装注意事项: 1)尽量选择与这个Perl版本兼容的相关Perl模块: 2)由于PAR-Packer-1.013对perl版本需求决定, ...

  4. perl脚本语言学习

    来公司的第二个星期便看了一下perl语言,发现掌握一门脚本语言还是非常有用的.到现在为止已经入职两个月,用perl脚本做了这些活: 1. 修改了公司的一个爬取网页源代码的脚本 2. 改进了一个出特征库 ...

  5. 实战Perl脚本测试

    实战Perl脚本测试(转) 这是一篇关于perl脚本测试的总结性文章,其中提到了很多实用的模块,如果文中介绍的不够详细,请到cpan上搜索该模块并查阅其文档.  1基本语法检查 Perl语言的哲学是& ...

  6. DM8联机逻辑备份perl脚本实现要点(单双引号、system和disql)

    概要 此文章非完整脚本功能分享,仅就实现逻辑备份功能进行分享. 问题背景 在编写DM8自动化备份perl脚本中,在涉及联机物理库级备份时,需要执行相关操作,正常情况下,相应语句如下(已简写,便于理解) ...

  7. Linux中perl脚本监控

    根据公司需求 自己编写的perl脚本 希望可以帮到大家 #!/usr/bin/perl while(1){ open (LOG,">> /var/log/flow.log&quo ...

  8. linux命令行参数含空格,linux-具有命令行参数和空格的Perl脚本

    我觉得我在这里似乎遗漏了一些明显的东西,但是我似乎无法弄清楚发生了什么.我有一个从C代码调用的perl脚本.脚本参数是这样的: my_script "/some/file/path" ...

  9. linux perl 单例模式,Perl脚本学习经验(三)--Perl中ftp的使用

    使用use Net::FTP; Demo: my $Server = '192.168.1.1'; my $User = 'admin'; my $Password = 'admin'; my $ft ...

  10. window-运行perl脚本(搭建health-check环境)

    安装vsphere sdk VMware-vSphere-Perl-SDK-5.1.0-780721.exe ##看具体的情况安装对应版本的sdk 修改系统环境变量,将安装路径Perl/bin和Per ...

最新文章

  1. 转载CSDN - 从程序员到HR——面试经验分享
  2. Scrum Master角色可能消失吗?
  3. 如何转换和输出超大整数(64位)
  4. 不断学习UI框架的写法
  5. jQuery Mobile页面返回无需重新get
  6. 30 个 Pandas技巧,加速你的数据分析处理速度!
  7. spring jaxb_自定义Spring命名空间使JAXB变得更容易
  8. Java中Long到Int的精确转换
  9. 上传图片的表单java代码_java模拟post方式提交表单实现图片上传(示例代码)
  10. HBase之HRegionServer处理put请求
  11. 余世维台湾经典讲座--管理者的EQ(一)
  12. 我在优酷 OTT 端做自动化制图
  13. mysql cmake 编译出错_Mysql安装过程中CMAKE编译出错
  14. 个人项目之电商秒杀系统总结
  15. docker host模式拿到nginx远程ip端口_docker网络模式实战
  16. 最新修复版efucms聚合小说漫画动漫听书分销系统源码(附安装教程)
  17. wxnativecallback.php,ectouch开发 | 糊涂虫
  18. 缺少计算机所需的介质驱动程序6,缺少计算机所需的介质驱动程序解决办法
  19. groupdel: cannot remove the primary group of user 'lxh1'的解决办法
  20. 云上PDF怎么删除页眉页脚_word页眉页脚删除不了?教你几招轻松搞定

热门文章

  1. 嵌入式Linux开发与单片机开发的区别
  2. Java 百度OCR 身份证识别
  3. 学生签到系统java_基于jsp的学生签到-JavaEE实现学生签到 - java项目源码
  4. python下载手机app视频教程_Python实例教学
  5. 一款QQ全自动签到的辅助工具
  6. Java 基础知识 【钢镚核恒】
  7. eslint / prettier 检查格式配置、husky / lint-staged 强制校验、tslint 配置
  8. VPX国产化千兆交换板
  9. VeraCrypt文件硬盘加密使用教程
  10. nupkg 本地安装_使用Nuget安装脱机软件包nupkg