本文介绍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
#将
例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 '
#$.为当前行号
例10:非空行行号递增,全部输出
perl -pe '
#if /S/ 匹配到非空白行,行号自增并返回(++
例11:非空行行号递增,只输出非空行
perl -ne 'print ++
#不输出没处理的行,即空白行不输出
例12:#计数单词个数,为每个单词编号
perl -pe 's/(w+)/"<".++
<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 '
<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生物人