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

Perl一行式:文本编解码、替换相关推荐

  1. Perl一行式:处理空白符号

    perl一行式程序系列文章:Perl一行式 假如文件file.log内容如下: root x 0 0 root /root /bin/bash daemon x 1 1 daemon /usr/sbi ...

  2. Fiddler使用技巧:强大的数据文本编解码功能

    " 郑重推荐Fiddler工具自带的TextWizard功能." Fiddler作为一个HTTP类协议的抓包分析工具,之前已介绍过抓包分析功能,可参考文章: <使用Fiddl ...

  3. Netty常用招式——ChannelHandler与编解码

    本文是Netty系列第8篇 上一篇文章我们深入学习了Netty逻辑架构中的核心组件ChannelHandler和ChannelPipeline,并介绍了它在日常开发使用中的最佳实践.文中也提到了,Ch ...

  4. Python笔记2_替换式文本加密

    本文为观看教学视频后的笔记整理,原教程来自哔哩哔哩爱可可爱生活 有时间的小伙伴可以去看一看,老师那里还有很多比较基础的教程 点击此处,进入Github获取下方代码的完整 JupyterNotebook ...

  5. Netty系列之Netty编解码框架分析

    1. 背景 1.1. 编解码技术 通常我们也习惯将编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输.数据持久化或者其它用途. 反之,解码(Decod ...

  6. python--字符/文本编码解码笔记

    字符/文本编码解码笔记 1.字符问题 编码和解码 2.字节概要 3.基本的编解码器 编码类型史 字符编码 ASCII码 GB2312以及其他编码 UNICODE标准编码 UTF-8编码 4.了解编解码 ...

  7. 我的Android进阶之旅------gt;Android中编解码学习笔记

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

  8. 各种音视频编解码标准

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

  9. 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

最新文章

  1. 关于YOLO算法的备忘
  2. 1111 Online Map (30 分)【难度: 一般 / 知识点: Dijkstra最短路】
  3. 可应用于实际的14个NLP突破性研究成果(一)
  4. es6 使用修饰器实现Mixin模式
  5. BZOJ-1177 [Apio2009]Oil
  6. 网络:Server returned HTTP response code: 400(url中文)
  7. FTP文件传输协议介绍和常用命令
  8. LeetCode刷题(47)--Gray Code
  9. vector添加元素java_在Java中的Vector中间添加元素
  10. 论文(0):下载ieee期刊会议杂志论文模板流程--以IEEE RA-L为例
  11. 如何编写python代码
  12. java date()使用_Java Date from()用法及代码示例
  13. 什么是短连接,如何用 Python 生成短连接?
  14. activiti 5.19整合modeler在线编辑器
  15. 计算机网络技术对经济的直接影响,计算机网络技术对电子商务发展的影响
  16. Azure Blob Storage 基本用法上传/下载(Java)
  17. 【leetcode个人练习记录】 滑动窗口的问题
  18. 初心始终 殊途同归 | SCTF同期个人能力认证考核专场报名开启
  19. 最新多用途的APP软件业务介绍官网模板源码
  20. LeetCode刷题(37)~无重复字符的最长子串

热门文章

  1. MATLAB知识点2
  2. 将oracle select * from all_tab_comments where comments like ‘%XXXX%‘查询结果转为select语句
  3. JSP知识点笔记-常用技术方法
  4. vbs控制电脑说话,vbs获取时间,vbs小程序
  5. 2.5 matlab稀疏矩阵
  6. eclipse java shell 窗体显示 bat运行不显示_java eclipse中如何实现点击主窗口sShell中的按钮打开另外一个子窗口sShell...
  7. 矩阵的行列sum() Python
  8. oracle中ci是什么意思,enq: CI - contention(附AWR)
  9. CCS(Code Composer Studio) 10.2.0的下载和安装(最新教程)
  10. Pwn-10月21-jarvis-level0