Perl一行式:文本编解码、替换
perl一行式程序系列文章:Perl一行式
文本大小写转换
全部字符转换成大写或小写,有几种方式:
# 转大写
$ perl -nle 'print uc' file.log
$ perl -ple '$_ = uc' file.log
$ perl -nle 'print "\U$_"' file.log
# 转小写
$ perl -nle 'print lc' file.log
$ perl -ple '$_ = lc' file.log
$ perl -nle 'print "\L$_"' file.log
每行首字母大小写转换:
$ perl -nle 'print lcfirst' file.log
$ perl -lpe '$_ = ucfirst' file.log
$ perl -lne 'print \u\L$_' file.log
单词首字母大写,其它小写:
$ perl -ple 's/(\w+)/\u$1/g' file.log
修剪前缀、后缀空白
去掉前缀空白的方式:
$ perl -ple 's/^\s+//' file.log
去掉后缀空白的方式:
$ perl -lpe 's/\s+$//' file.log
同时去掉前缀和后缀空白:
$ perl -lpe 's/^\s+|\s+$//' file.log
反序输出所有段落
$ perl -00 -e 'print reverse <>' file.log
前面的文章压缩连续的空行解释过,-00是按段落读取且压缩连续的空行。
reverse <>中reverse的操作对象期待的是一个列表,所以<>会一次性读取整个文件且按照段落读取,每个段落是列表中的一个元素。最后reverse函数反序这个列表,然后被print输出。
反序输出所有行
$ perl -e 'print reverse <ARGV>' file.log
sync x 4 65534 sync /bin /bin/sync
sys x 3 3 sys /dev /usr/sbin/nologin
bin x 2 2 bin /bin /usr/sbin/nologin
daemon x 1 1 daemon /usr/sbin /usr/sbin/nologin
root x 0 0 root /root /bin/bash
这里reverse <ARGV>表示一次性读取file.log的所有行并进行反转。
也可以使用下面这种方式,但如果文件结尾不正确(缺少eof),可能会卡住:
$ perl -e 'print reverse <>' file.log
ROT13字符映射
Perl中可使用tr///或y///进行字符一一映射的替换。它们和unix下的tr命令作用类似。
$ perl -le '$string="hello";$string =~ y/a-zA-Z/N-Za-mA-Mn-z/;print $string'
URYYb
BASE64编码、解码
MIME::Base64模块提供了base64编码、解码的方法。
编码:
$ perl -MMIME::Base64 -e 'print encode_base64("coding")'
Y29kaW5n
解码:
$ perl -MMIME::Base64 -le 'print decode_base64("Y29kaW5n")'
coding
编码文件:
$ perl -MMIME::Base64 -0777 -ne '
print encode_base64($_)' file.log
解码文件:
$ perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)' file
URL转义
使用URI::Escape模块即可进行URL转义。该模块需要额外安装cpan URI::Escape。
$ perl -MURI::Escape -le 'print uri_escape("http://example.com")'
http%3A%2F%2Fexample.com
反转义:
$ perl -MURI::Escape -le '
print uri_unescape("http%3A%2F%2Fexample.com")'
http://example.com
HTML编码、解码
先安装额外HTML格式的编解码模块cpan HTML::Entities。
$ perl -MHTML::Entities -le 'print encode_entities("<html>")'
$ perl -MHTML::Entities -le 'print decode_entities("<html>")'
Perl一行式:文本编解码、替换的更多相关文章
- Perl一行式:处理空白符号
perl一行式程序系列文章:Perl一行式 假如文件file.log内容如下: root x 0 0 root /root /bin/bash daemon x 1 1 daemon /usr/sbi ...
- Perl一行式:处理行号和单词数
perl一行式程序系列文章:Perl一行式 所有行的行号 $ perl -pe '$_ = "$. $_"' file.log $ perl -ne 'print "$. ...
- Perl一行式:选择行输出、删除、追加、插入
perl一行式程序系列文章:Perl一行式 对于Perl的一行式perl程序来说,选择要输出的.要删除的.要插入/追加的行是非常容易的事情,因为print/say决定行是否输出/插入/追加/删除.虽然 ...
- Perl一行式:字段处理和计算
perl一行式程序系列文章:Perl一行式 获取每行最后一个字段 $ perl -alne 'print $F[$#F]' file.log 这里涉及到了选项"-a".数组@F.这 ...
- Fiddler使用技巧:强大的数据文本编解码功能
- 总览 打开Fiddler后,使用快捷键Ctrl+e或者点击菜单Tools-->TextWizard...即可进入TextWizard界面. 界面上方为输入框,用来输入需要编码或解码的数据. ...
- Netty常用招式——ChannelHandler与编解码
本文是Netty系列第8篇 上一篇文章我们深入学习了Netty逻辑架构中的核心组件ChannelHandler和ChannelPipeline,并介绍了它在日常开发使用中的最佳实践.文中也提到了,Ch ...
- 【转】Netty系列之Netty编解码框架分析
http://www.infoq.com/cn/articles/netty-codec-framework-analyse/ 1. 背景 1.1. 编解码技术 通常我们也习惯将编码(Encode)称 ...
- Netty系列之Netty编解码框架分析
1. 背景 1.1. 编解码技术 通常我们也习惯将编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输.数据持久化或者其它用途. 反之,解码(Decod ...
- 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放 license收费等 ...
随机推荐
- (转)protein 数据库
最早关注蛋白质互作网络,是在来GDMC第一年的时候,中间停了半年看互作-各种算法,网络分析停滞不前,没想到搞到最后,还是和网络碰到了一起,我总是会潜意识走近给自己第一印象不错的object,包括人.用 ...
- css实用属性
background-size: 100% 100%; 背景通过拉伸实现填充 自适应 overflow: hidden; ...
- jenkins的sbt插件安装
在jenkins服务器手动安装sbt curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo mv bintray-sbt-rpm ...
- K8s 入门
中文文档:https://www.kubernetes.org.cn/kubernetes%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84 小结大白话 Portainer 挺好 ...
- 干掉safedog命令
sc delete safedogguardcenter shutdown -r -t 00 两条命令搞定
- cmd 创建用户,并授权管理员权限就可以远程登陆了
创建账号 net user 用户名 密码 /add //注意空格 授权管理员权限 net localgroup Administrators 用户名 /add // ...
- Kotlin基础
1.函数也是对象,可以作为参数和返回值 2.使用驼峰命名,尽量避免下划线 3.public函数应当有说明文档 4.lambda中花括号内前后都应该有空格 5.空值安全检查 var s: String ...
- PHPWord导出word文档
最近接了个把数据导出到word文档的需求,之前一直都是使用PHPExcel库导出excel的,还是头次接到导出到word文档的需求,我想既然有PHPExcel,那么肯定也会有PHPWord库吧,在网上 ...
- JDK设计模式之——装饰者模式
假定已经有三个类A,B和C他们的继承关系如下 ClassA Class B extends A Class C extends A 想进一步扩展类B和类C的功能,新增三个方法 m ...
- [Swift]LeetCode256.粉刷房子 $ Paint House
There are a row of n houses, each house can be painted with one of the three colors: red, blue or gr ...