perl 匹配文件行数_Perl学习06之一行式操作

28c3d0b12c7ae97edc7994a5aa8e263c.png
本文介绍Perl语言中一行式命令使用。

目录

欢迎微信随缘关注@pythonic生物人

一行式选项 特殊字符
例1:每一行后面加空行
例2:每一行后加空行,空行除外
例3:连续输出多个相等字符
例4:行前加空行
例5:输出非空行
例6:移除单词间所有空白
例7:每行单词间连续空白压缩为单空格
例8:原地修改拷贝
例9:所有行行号
例10:非空行行号递增,全部输出
例11:非空行行号递增,只输出非空行
例12:#计数单词个数,为每个单词编号
例13:#计算每行单词个数,每行单独编号

Perl程序一行命令,可以替代grep+sed+awk;

一行式选项

-e 表示后面接perl的一行式表达式;
-p 表示print操作,即对每一读入的行在经过表达式操作后都默认输出;
-n 表示处理文件但默认不输出处理后的行;
-p -n都存在 -n和-p两个选项会自动读取文件,-p会覆盖-n;
-l 在结合-n或-p使用的时,会自动对读入的行移除尾随换行符,然后在输出的时候自动追加尾随输出分隔符;
-i 原地修改、拷贝副本,类似sed的"-i";

特殊字符

$ 输出行分隔符,类似awk的ORS,它默认为undef;
$. 当前处理行的行号。
更新ing

例如,待处理文件夹file.log

root x 0 0 root /root /bin/bash

daemon x 1 1 daemon /usr/sbin /usr/sbin/nologin
bin x 2 2 bin /bin /usr/sbin/nologin
sys x 3 3 sys /dev /usr/sbin/nologin
sync x 4 65534 sync /bin /bin/sync

例1:每一行后面加空行

perl -pe '$="n"' file.log

#将

默认为空值undef

例2:每一行后加空行,空行除外

perl -pe '$="n" unless /^$/' file.log

#unless /^$/跳过空行

perl -pe '$="n" if /s/' file.log

#s匹配到多个空白符跳过

以上方法类似

例3:连续输出多个相等字符

perl -e 'print "Comeon!t"x10,"n";'

#x,表示重复

例4:行前加空行

perl -pe 's/^/n/g' file.log

#^替换为n

例5:输出非空行

perl -ne 'print if /S/' file.log

#匹配到一个空白(S)就不输出(-n)

perl -ne 'print unless/^$/' file.log

#unless/^$/,匹配到空白就不输出(-n)

perl -lne 'print if length' file.log

#ength($_)为零不输出

例6:移除单词间所有空白

perl -lpe 's/ //g' file.log

#类似于sed -i

例7:每行单词间连续空白压缩为单空格

perl -lpe 's/s+/ /g' file.log

#s/s+/ /g 多空白替换为一空白

例8:原地修改拷贝

perl -i".bak" -lpe 's/$/n/g' file.log

#-i修改文件并复制为file.log.bak

例9:所有行行号

perl -pe '

. $_"' file.log

#$.为当前行号

例10:非空行行号递增,全部输出

perl -pe '

x." $_" if /S/' file.log

#if /S/ 匹配到非空白行,行号自增并返回(++

x.中x可以替换为其它字母)

例11:非空行行号递增,只输出非空行

perl -ne 'print ++

_" if /S/' file.log

#不输出没处理的行,即空白行不输出

例12:#计数单词个数,为每个单词编号

perl -pe 's/(w+)/"<".++

.">1"/ge' file.log

<1>.root <2>.x <3>.0 <4>.0 <5>.root /<6>.root /<7>.bin/<8>.bash

<9>.daemon <10>.x <11>.1 <12>.1 <13>.daemon /<14>.usr/<15>.sbin /<16>.usr/<17>.sbin/<18>.nologin

<19>.bin <20>.x <21>.2 <22>.2 <23>.bin /<24>.bin /<25>.usr/<26>.sbin/<27>.nologin

<28>.sys <29>.x <30>.3 <31>.3 <32>.sys /<33>.dev /<34>.usr/<35>.sbin/<36>.nologin

<37>.sync <38>.x <39>.4 <40>.65534 <41>.sync /<42>.bin /<43>.bin/<44>.sync

例13:#计算每行单词个数,每行单独编号

perl -pe '

num.">.$1"/ge' file.log

<1>.root <2>.x <3>.0 <4>.0 <5>.root /<6>.root /<7>.bin/<8>.bash

<1>.daemon <2>.x <3>.1 <4>.1 <5>.daemon /<6>.usr/<7>.sbin /<8>.usr/<9>.sbin/<10>.nologin

<1>.bin <2>.x <3>.2 <4>.2 <5>.bin /<6>.bin /<7>.usr/<8>.sbin/<9>.nologin

<1>.sys <2>.x <3>.3 <4>.3 <5>.sys /<6>.dev /<7>.usr/<8>.sbin/<9>.nologin

<1>.sync <2>.x <3>.4 <4>.65534 <5>.sync /<6>.bin /<7>.bin/<8>.sync

........

参考文献

https://www.cnblogs.com/f-ck-need-u/p/10219742.html#直接修改文件

欢迎微信随缘关注@pythonic生物人

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值