常用 perl 单行命令模式

========= 比配次数计算 (字符重复出现次数)================
@matches = "balata" =~ /.a/g;  # now @matches = ("ba", "la", "ta") 用数组存下比配到的信息;
$count = scalar @matches         # now $count = 4;  scalar 取出数据长度,就是比配到的次数;

========= 单行命令模式下,找出信息出现的次数;============
ps -ef | perl -0ne 'print s/a//gi."/n"'     # 参数-0 零,表示把所有行都看成一行; /g全比配,i忽略大小写

========= 单行命令模式 只打指定列  ============
echo 'hello:the:world:!:i:love:you:!' | perl -F: -lane 'print "@F[0..1]   $F[-1]"'
# -F: 指定分隔符为:
# @F[0..1] 表示分隔域 0~1
# $F[-1] 特指倒数 第一个 域

========= 单行命令模式 打印指定行  =================
ps -ef | perl -lane 'print if $. == 1..10'      # $. This means that it's current line

========= 单行命令模式 打印指定行 与 列  =================
ps -ef | perl -lane 'print "@F[0..1]   $F[-1]" unless ($. == 1..10)'   # $. This means that it's current line

========= 把每一行都当作 perl 的表达式 如 =================
echo "8*8" | perl -lane 'print eval($_)' # result is  64

========= 文件按行反转  =================
ps -ef | perl -e 'print reverse <>'

你可能感兴趣的:(常用 perl 单行命令模式)