https://www.jb51.net/article/123326.htm

感觉挺好的 改天需要仔细学习一下. 

前言

本文主要给大家介绍了关于Perl单行命令的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

与One-Liner相关的perl参数

  • -a 自动分隔模式,用空格分隔$并保存在@F中,也就是@F=split //, $
  • -F 指定-a的分隔符
  • -l 对输入的内容进行自动chomp,对输出的内容自动加换行符
  • -n 相当于while(<>)
  • -e 执行命令,也就是脚本
  • -p 自动循环+输出,也就是while(<>){命令(脚本); print;}

记住以上几点参数,几乎可以开始使用perl来编写one line命令了

以上为简介版,下面这张图可以算是完整版

根据下面的例子来理解下perl one line

1、基本格式:perl -参数 ‘命令' 输入文件

2、perl -e为必须要写的参数

3、perl -pe 可用于读取文件每行,并按照给定的命令进行处理,最后输出;如将文件1.txt中的aaa替换为AAA

1
perl -pe 's/aaa/AAA/g' 1.txt

4、perl -l参数几乎可以跟n搭配代替perl经常用的while(<>){chomp;}语法

5、如果需要处理tab分割的文件的每一行内容,那么perl -alne参数几乎可以说是必备的,例如while(<>){chomp;@F=split /\s+/,$_;print "$F[0]\n"}相当于

1
perl -alne 'print $F[0]'

6、perl单行命令脚本里的变量都不需要预先声明,如想打印出每空行,并且每行以行数开头

1
perl -ne 'print ++$a." $_" if /./'

7、perl单行命令有时优于sed/grep等shell命令是由于其优秀的正则匹配,通常简单的匹配可以如:匹配上的行号,模仿grep -c的功能:

1
perl -lne '$a++ if /regex/; END {print $a+0}'

8、perl单行命令可以使用perl的模块,如使用sum函数的模块:

1
perl -MList::Util=sum -alne 'print sum @F'

9、perl也可以像awk一样使用END命令,如打印出文件中总单词个数

1
perl -alne '$t += @F; END { print $t}'

10、perl也可以使用map{}等函数,如打印出匹配上的单词的总个数

1
perl -alne 'map { /regex/ && $t++ } @F; END { print $t }'

11、perl单行命令可以说是将perl的简洁用到了极致,如打印出匹配上的行:

1
perl -ne '/regex/ && print'

12、perl单行命令能像perl一样灵活的使用则正表达式

1
perl -ne 'print if /^\d+$/'

以上例子均出自于http://www.catonmat.net/blog/perl-one-liners-explained-part-one/

使用perl来处理数据的我们,会一点Perl one line可以有效的减少编写重复命令的时间,尤其是那些就用1-2次就不会用的脚本,尤其在window系统下不方便使用shell命令的时候。

PS.当然在windows系统下也可以借用git模拟Unix命令环境~~~~

总而言之,蛮适合学习下,多用用

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

[转帖] Linux 下面 perl 命令的简介的更多相关文章

  1. [转帖]Linux的wget命令详解

    Linux的wget命令详解 来源不明 找到的也是转帖的 https://www.cnblogs.com/cindy-cindy/p/6847502.html Linux wget是一个下载文件的工具 ...

  2. [转帖]Linux:cut命令详解

    Linux:cut命令详解 https://www.cnblogs.com/Spiro-K/p/6361646.html cut -f cut -f -d cut -c1- 这三个命令好像最常见, 记 ...

  3. [转帖]Linux后端执行命令的方法

    Linux 后台执行命令的方法 http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4241330&fromuid=212883 ...

  4. [转帖]Linux systemd 常用命令

    Linux systemd 常用命令 https://www.cnblogs.com/tsdxdx/p/7288490.html systemctl hostnamectl timedatectl l ...

  5. [转帖]Linux性能测试 pmap命令

    Linux性能测试 pmap命令 https://www.cnblogs.com/txw1958/archive/2012/07/26/linux-pmap.html 名称:       pmap - ...

  6. Linux网络下载命令 wget 简介

    wget 是一个命令行的下载工具.对于我们这些 Linux 用户来说,几乎每天都在使用它.下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget. $ wget -r -n ...

  7. [转帖]Linux 下 DD 命令的使用详解

    https://blog.csdn.net/noviblue/article/details/56012275 一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注 ...

  8. Linux 下 grep 命令常用方法简介

    1.从单个文件中搜索指定的字符串: $ grep "literal-string" filename 该命令会输出字符串在文件中所在行的内容,如果字符串没有空格,则可以不加双引号. ...

  9. 【转帖】Linux定时任务Crontab命令详解

    Linux定时任务Crontab命令详解 https://www.cnblogs.com/intval/p/5763929.html 知道有crontab 以及 at 命令 改天仔细学习一下 讲sys ...

随机推荐

  1. wx小程序知识点(五)

    五.双向绑定和 vue 的区别 ① vue 中实现双向绑定只需要修改 this.data var vm = new Vue({ el: '#example', data: { message: 'He ...

  2. Linux系统下使用 mail 发送邮件

    邮件常常是Linux下监控报警手段之一.Linux下的mail命令可以方便,快速的完成发送邮件.下面以CentOS为例 1.安装: [app@127-0-0-1 ~]# mail -bash: mai ...

  3. HDU6579 Operation

    题目链接 问题分析 区间求异或和最大,比较自然的想到了线性基.而每次求一个区间的线性基显然是行不通的.我们考虑在每个位置求出首位置到当前位置的线性基.同时我们要使线性基中高位的位置所选的数尽量靠后.这 ...

  4. 用node.js搭建一个静态资源站 html,js,css正确加载 跳转也完美实现!

    昨天买了一个服务器想着用来测试一些自己的项目,由于是第一次建站,在tomcat,linux,node.js间想了好久.最终因为node搭建比较方便没那么麻烦就决定用node.js来搭建网站项目. 搭建 ...

  5. The 10 Statistical Techniques Data Scientists Need to Master

    原文 就我个人所知有太多的软件工程师尝试转行到数据科学家而盲目地使用机器学习框架来处理数据,例如,TensorFlow或者Apache Spark,但是对于这些框架背后的统计理论没有完全的理解.所以提 ...

  6. C++入门经典-例6.9-通过指针变量获取数组中的元素

    1:通过指针引用数组,需要先声明一个数组,再声明一个指针. int a[10]; int *p; 然后通过&运算符获取数组中元素的地址,再将地址值赋给指针变量. p=&a[0]; 代码 ...

  7. vue开发多页面应用

    1.添加多页面配置 在工程根路径下(package.json同目录)添加添加vue.config.js配置文件,内容为: module.exports = { pages: { index: 'src ...

  8. 套接字选项 之 SO_REUSEADDR && SO_REUSEPORT

    说明 本文下面内容基本上是截取自stackoverflow,针对这两个选项,在另外一篇文章中做了总结,请移步<Linux TCP套接字选项 之 SO_REUSEADDR && S ...

  9. hdfs、zookeepeer之HA模式

    HA简介 1.所谓HA,即高可用(high available) 2.消除单点故障,避免集群瘫痪,hdfs中namenode保存了整个集群的元数据,如果namenode所在机器宕机,则整个集群瘫痪,H ...

  10. docker top 和 docker exec ps 命令查看的PID区别

    区别在于 docker top 查看到的 PID 属于宿主机的 PID.我们可以通过  宿主机执行 ps -ef 查看结果 也可以进去容器执行 top 和 ps查看结果