骏马金龙 (新博客:www.junmajinlong.com)

网名骏马金龙,钟情于IT世界里的各种原理和实现机制,强迫症重症患者。爱研究、爱翻译、爱分享。特借此一亩三分田记录自己成长点滴!!!

Perl一行式:文本编解码、替换

分类: 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("&lt;html&gt;")'

 

转载请注明出处:https://www.cnblogs.com/f-ck-need-u/p/10243772.html

如果觉得文章不错,不妨给个打赏,写作不易,各位的支持,能激发和鼓励我更大的写作热情。谢谢!

posted @   骏马金龙  阅读(984)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2018-01-09 java URL和URLConnection
2018-01-09 java 网络编程之TCP通信和简单的文件上传功能
# 本文目录:
(右下角 # 关闭目录)
文本大小写转换修剪前缀、后缀空白反序输出所有段落反序输出所有行ROT13字符映射BASE64编码、解码URL转义HTML编码、解码
点击右上角即可分享
微信分享提示

感谢您的支持

扫描二维码打赏

支付宝打赏