Perl命令行常见用法及技巧

摘要:
正在将旧文件备份到。bakperl-p-i.bak-e的/foo/bar/g’*。c是一个非常强大的函数。“馅饼”这个词很好。将perl-i.bak-pe的/(d+)/1+$1/ge‘file1file2添加到每个文件中出现的值。。。。将换行符替换为perl-pie的//g'文件,该文件与dos2unix命令相同。
Perl命令行常见用法及技巧
作者:懒人运维 来源: 懒人运维 

 
 

 

替换

将所有C程序中的foo替换成bar,旧文件备份成.bak

perl -p -i.bak -e ’s/foo/bar/g’ *.c

很强大的功能,特别是在大程序中做重构。记得只有在UltraEdit用过。 如果你不想备份,就直接写成 perl -p -i -e 或者更简单 perl -pie, 恩,pie这个单词不错

将每个文件中出现的数值都加一

perl -i.bak -pe ’s/(d+)/ 1 + $1 /ge’ file1 file2 ….

将换行符 替换成

perl -pie ’s/ / /g’ file

同dos2unix命令。

将换行符 替换成

perl -pie ’s/ / /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] ”‘ /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 ”,$_’

10进制转8进制: perl -ne ‘printf “%o ”,$_’

16进制转10进制:

perl -ne ‘print hex($_).” ”‘

8进制转10进制:

perl -ne ‘print oct($_).” ”‘

简易计算器。

perl -ne ‘print eval($_).” ”‘

其他

启动交互式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命令行常见用法及技巧》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇浅谈Python-IO多路复用(select、poll、epoll模式)nodejs获取文件信息,判断是文件或目录下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

tomcat设置gzip

使用tomcat发布3dtiles或terrain数据遇到的gzip问题 问题一 对大于1KB小于48KB的json请求进行gzip压缩,json为原文件(对于大于48KB使用sendfile) 1.创建原始文件 2.设置 在apache-tomcat-8.5.9/conf/server.xml文件中,修改节点如下: <Connector port...

idea配置docker

一、idea安装docker插件 欢迎页->Configure->Plugins插件使用说明 二、docker服务器开放监听端口 根据官网信息,docker默认只接受本地客户端的请求;若需要接受远程访问,可以使用docker.service系统单元文件来配置Docker以接受远程连接,该文件用于使用systemd的Linux发行版,例如RedH...

如何利用火狐控制台下载网页图片

今天在群里看到一个群友的问题,怎么下载网页的图片,经过一番的演变,得出了本文的成果,也算是一种思路,还可以演变成干很多事,因此写下此文,希望能够对大家有所启发。 问题: 如何从一个网页里下载浏览器加载出来的图片? 思考思路: 1、利用Ctrl+S保存,取出里面的图片 2、通过火狐控制台的网络面板,复制所有图片链接 3、利用控制台执行解析现有html里的i...

SVN过滤设置

       为了方便管理我们的系统版本号。非常多人会用到SVN,开发中我们经经常使用到SVN插件, 可是对于某些文件的缓存来说, 我们仅仅要有操作缓存便会保存一次, 每次提交非常是麻烦, 可能有的文件或者目录我们并不想提交到管理端。这时,就须要使用SVN的过滤设置,这篇文庄主要就是介绍一下,怎样进行SVN的过滤设置。         首先,我们须要安...

统计一个版本代码变化行数

项目总结时,我们常常需要统计代码行数,来查看每个项目开发者的代码总量,提交次数和变更文件数。 这里介绍一下statsvn工具统计代码行数的方法。   1、安装tortoise svn 下载tortoise svn,下载地址:https://tortoisesvn.net/downloads.html,附件给出了64位的版本。 点击运行,按照提示安装完成。...

真机调试问题 错误集合

1. 编译iPad真机时,选择了 Architetures:Standard(armv6) BaseSDK:iPhoneDevice3.2 TargetDeviceFamily:iPad. 若编译出现如下错误: Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2...