经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Perl » 查看文章
Perl一行式:文本编解码、替换
来源:cnblogs  作者:骏马金龙  时间:2019/1/10 9:39:42  对本文有异议

perl一行式程序系列文章Perl一行式


文本大小写转换

全部字符转换成大写或小写,有几种方式:

  1. # 转大写
  2. $ perl -nle 'print uc' file.log
  3. $ perl -ple '$_ = uc' file.log
  4. $ perl -nle 'print "\U$_"' file.log
  5. # 转小写
  6. $ perl -nle 'print lc' file.log
  7. $ perl -ple '$_ = lc' file.log
  8. $ perl -nle 'print "\L$_"' file.log

每行首字母大小写转换:

  1. $ perl -nle 'print lcfirst' file.log
  2. $ perl -lpe '$_ = ucfirst' file.log
  3. $ perl -lne 'print \u\L$_' file.log

单词首字母大写,其它小写:

  1. $ perl -ple 's/(\w+)/\u$1/g' file.log

修剪前缀、后缀空白

去掉前缀空白的方式:

  1. $ perl -ple 's/^\s+//' file.log

去掉后缀空白的方式:

  1. $ perl -lpe 's/\s+$//' file.log

同时去掉前缀和后缀空白:

  1. $ perl -lpe 's/^\s+|\s+$//' file.log

反序输出所有段落

  1. $ perl -00 -e 'print reverse <>' file.log

前面的文章压缩连续的空行解释过,-00是按段落读取且压缩连续的空行。

reverse <>中reverse的操作对象期待的是一个列表,所以<>会一次性读取整个文件且按照段落读取,每个段落是列表中的一个元素。最后reverse函数反序这个列表,然后被print输出。

反序输出所有行

  1. $ perl -e 'print reverse <ARGV>' file.log
  2. sync x 4 65534 sync /bin /bin/sync
  3. sys x 3 3 sys /dev /usr/sbin/nologin
  4. bin x 2 2 bin /bin /usr/sbin/nologin
  5. daemon x 1 1 daemon /usr/sbin /usr/sbin/nologin
  6. root x 0 0 root /root /bin/bash

这里reverse <ARGV>表示一次性读取file.log的所有行并进行反转。

也可以使用下面这种方式,但如果文件结尾不正确(缺少eof),可能会卡住:

  1. $ perl -e 'print reverse <>' file.log

ROT13字符映射

Perl中可使用tr///y///进行字符一一映射的替换。它们和unix下的tr命令作用类似。

  1. $ perl -le '$string="hello";$string =~ y/a-zA-Z/N-Za-mA-Mn-z/;print $string'
  2. URYYb

BASE64编码、解码

MIME::Base64模块提供了base64编码、解码的方法。

编码:

  1. $ perl -MMIME::Base64 -e 'print encode_base64("coding")'
  2. Y29kaW5n

解码:

  1. $ perl -MMIME::Base64 -le 'print decode_base64("Y29kaW5n")'
  2. coding

编码文件:

  1. $ perl -MMIME::Base64 -0777 -ne '
  2. print encode_base64($_)' file.log

解码文件:

  1. $ perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)' file

URL转义

使用URI::Escape模块即可进行URL转义。该模块需要额外安装cpan URI::Escape

  1. $ perl -MURI::Escape -le 'print uri_escape("http://example.com")'
  2. http%3A%2F%2Fexample.com

反转义:

  1. $ perl -MURI::Escape -le '
  2. print uri_unescape("http%3A%2F%2Fexample.com")'
  3. http://example.com

HTML编码、解码

先安装额外HTML格式的编解码模块cpan HTML::Entities

  1. $ perl -MHTML::Entities -le 'print encode_entities("<html>")'
  2. $ perl -MHTML::Entities -le 'print decode_entities("&lt;html&gt;")'
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号