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;")'

Perl一行式:文本编解码、替换的更多相关文章

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

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

  2. Perl一行式:处理行号和单词数

    perl一行式程序系列文章:Perl一行式 所有行的行号 $ perl -pe '$_ = "$. $_"' file.log $ perl -ne 'print "$. ...

  3. Perl一行式:选择行输出、删除、追加、插入

    perl一行式程序系列文章:Perl一行式 对于Perl的一行式perl程序来说,选择要输出的.要删除的.要插入/追加的行是非常容易的事情,因为print/say决定行是否输出/插入/追加/删除.虽然 ...

  4. Perl一行式:字段处理和计算

    perl一行式程序系列文章:Perl一行式 获取每行最后一个字段 $ perl -alne 'print $F[$#F]' file.log 这里涉及到了选项"-a".数组@F.这 ...

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

    - 总览 打开Fiddler后,使用快捷键Ctrl+e或者点击菜单Tools-->TextWizard...即可进入TextWizard界面. 界面上方为输入框,用来输入需要编码或解码的数据. ...

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

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

  7. 【转】Netty系列之Netty编解码框架分析

    http://www.infoq.com/cn/articles/netty-codec-framework-analyse/ 1. 背景 1.1. 编解码技术 通常我们也习惯将编码(Encode)称 ...

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

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

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

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

随机推荐

  1. DevExpress XtraTabbedMdiManager删除Page

    DevExpress XtraTabbedMdiManager删除Page 时,xtraTabbedMdiManager1.Pages.Remove()是没用的. 正确的应该是xtraTabbedMd ...

  2. React 之 JSX

    开发完了一个项目了才回来研究React 一系列的技术,算是对自己的一个提高吧,也是小公司程序员的无奈. JSX是什么? JSX是javascript的语法的扩展. 为什么使用JSX? 1.React ...

  3. ueditor编辑器多图上传为什么顺序打乱了

    我上一个版本用的是ueditor1.3.6,自从1.4.2版以后,“前端上传模块统一改用webuploader”,ueditor在多图上传一直考虑漏掉了图片顺序的问题. 我的网站在用户上传图片文章的时 ...

  4. Java安装以及环境变量配置

    1. 2. 3. 4. 5. class HelloWorld{ public static void main(String args[]){ System.out.print("Hell ...

  5. RabbitMQ CLI 管理工具 rabbitmqadmin(管理和监控)

    插个广告,公司最近在招".NET"开发(杭州),如果你现在还从事 .NET 开发(想用 .NET Core,但被公司不认可),想转 JAVA 开发(但又没有工作经验,惧怕面试),想 ...

  6. 【RL-TCPnet网络教程】第3章 初学RL-TCPnet的准备工作及其快速上手

    第3章       初学RL-TCPnet的准备工作及其快速上手 俗话说万事开头难,学习一门新的知识,难的往往不是知识本身,而是如何快速上手,需要什么资料和开发环境.一旦上手后,深入的学习就相对容易些 ...

  7. [Swift]LeetCode32. 最长有效括号 | Longest Valid Parentheses

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  8. [Swift]LeetCode345. 反转字符串中的元音字母 | Reverse Vowels of a String

    Write a function that takes a string as input and reverse only the vowels of a string. Example 1: In ...

  9. [Abp 源码分析]十、异常处理

    0.简介 Abp 框架本身针对内部抛出异常进行了统一拦截,并且针对不同的异常也会采取不同的处理策略.在 Abp 当中主要提供了以下几种异常类型: 异常类型 描述 AbpException Abp 框架 ...

  10. pytorch学习: 构建网络模型的几种方法

    利用pytorch来构建网络模型有很多种方法,以下简单列出其中的四种. 假设构建一个网络模型如下: 卷积层-->Relu层-->池化层-->全连接层-->Relu层--> ...