当前位置: 首页 > news >正文

perl 使用小结






环境设置:如果有系统字符编码 冲突,在当前
vim 
~/. bash_profile 下加入
LANG
= zh_CN
LC_ALL
= zh_CN . UTF8
export LANG LC_ALL


字符编码转化
:
  
#  由decode解析,默认会使用 系统编码 输出
  # 在 linux 下面其实等价 encode("UTF-8", decode("GBK",$_));

perl  - MEncode  - ne  ' print decode("GBK",$_); '   file . txt

判断数据是否符合输出:
  echo 
" 121 "   | perl  - ne  ' print if /2/; '     # print 123

匹配正则group输出
:
  echo 
" abc121a "   | perl  - ne  ' print $1 if /(\D+)/; '     # print abc

大小写转化:
  
#  全部 大小转小写
  echo  " ABC1C2cGJ "   | perl  - ne  ' tr/[A-Z]/[a-z]/; print ; '    # print
  # "L 中间全部小写 "E   ; "U 中间全部大写 "E    ↓

  echo  " ABC1C2cGJ "   | perl  - ne  ' s/(.*?1)(.*?)(2.*?)/$1\L$2\E$3/g; print ; '    # print ABC1c2cGJ



源文件替换:
   echo 
" ABC 123 "   >  te
   sed 
- ' s/ABC/abc/g '  te
       或者 
:  perl  - - pe  ' s/ABC/abc/g '  te
   cat te 
#  print abc 123


外部传参
:
  
tt="cc"
  echo "gg" |perl -ne ' print "'$tt'" ;'
  输出:cc

  perl  - e   ' print "$ARGV[0]\t$ARGV[1]\n"  '    ' par1 '   ' par2 '    # print par1 par2
  


重复列输出
:
   cat xx
. txt  |  awk  - F "      "   ' a[$1]++ '
   或者 
:    
   cat xx
. txt  | perl  - F " \t "   - ane   ' $a{$F[1]}++;END{
        while(($k,$v)=each(%a)){ print "$k = $v "n"; }
    }
'
    结果比如:
       百度手机在线 
=   7
       中兴 
=   2
       万信恒通  
=   2
   还比如:查看各用户 有多少个进程
   ps 
- ef  | perl   - ane   ' $a{$F[0]}++;END{
      while(($k,$v)=each(%a)){ print "$k = $v \n"; }
   }
'

求 两项  交集
cat BuyMusic
. 20090525 |  perl  - ne  ' BEGIN{
 $p1="600902000005416300";
 $p2="600902000006211983";
 $p_col=30;
 $mob_col=0;

}END{
  my @inter = grep {$a{$_}} keys %b; # 求交集
  #print $p1,"=",join(",",keys %a),""n";
  #print $p2,"=",join(",",keys %b),""n";
  print "产品 $p1:",scalar keys %a," "n";
  print "产品 $p2:",scalar keys %b," "n";
  print "交集:",scalar @inter," "n";
}
chomp;
@lis=split /\|<>\|/ ;
if( $lis[ $p_col] eq $p1 ){
   $a{$lis[$mob_col]}++;
}
if( $lis[$p_col] eq $p2 ){
   $b{$lis[$mob_col]}++;
}
'

 

关键字 Top 
10  ,输出源文本数据  :
perl 
- e   '
  my $num=10; # top 10
  open(MYFILE, "<$ARGV[0]");
  open(MYFILE2, "<$ARGV[0]");

  # 关键字列数
  while(<MYFILE>){@lis=split /\|<>\|/;$fck{$lis[1]}++ }

  foreach $k (sort { $fck{$b} <=> $fck{$a} } keys %fck){
     if(++$row>$num){last; }
     $arr[@arr] = $k;
  }
 
  while(<MYFILE2>){@lis=split /\|<>\|/;
     if(grep { $arr[$_] eq $lis[1] } 0..$#arr){
       # print "$fck{$lis[1]}:$_"; #带 关键字出现次数输出
       print ;
     }
  }
'  qdSearch . log




本文转自博客园刘凯毅的博客,原文链接:perl 使用小结 ,如需转载请自行联系原博主。


相关文章:

  • JS获取屏幕,可见窗口和网页文档(html)大小
  • C# 批量复制文件
  • linux 搭建基于域名的虚拟主机
  • 40个新鲜出炉的 Photoshop 优秀教程
  • linux 正则表达式
  • EA使用教程
  • JS编程建议——6:正确处理JavaScript特殊值(2)
  • 利用jQuery选择将被操作的元素
  • parted命令分区
  • 用python怎样实现接口测试
  • JSP语法1
  • iOS 画板 涂鸦 答题
  • poj 1475 Pushing Boxes
  • 初识 ActivityLifecycleCallbacks
  • Zim - 普通人的Org-mode
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • AngularJS指令开发(1)——参数详解
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • co模块的前端实现
  • css布局,左右固定中间自适应实现
  • extjs4学习之配置
  • isset在php5.6-和php7.0+的一些差异
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • PAT A1050
  • PAT A1120
  • React组件设计模式(一)
  • SpiderData 2019年2月25日 DApp数据排行榜
  • supervisor 永不挂掉的进程 安装以及使用
  • 基于Android乐音识别(2)
  • 理解在java “”i=i++;”所发生的事情
  • 力扣(LeetCode)22
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端性能优化--懒加载和预加载
  • 深入浅出webpack学习(1)--核心概念
  • 温故知新之javascript面向对象
  • 原生 js 实现移动端 Touch 滑动反弹
  • 在weex里面使用chart图表
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • #图像处理
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (C#)一个最简单的链表类
  • (day 12)JavaScript学习笔记(数组3)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Java数据结构)ArrayList
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (十)T检验-第一部分
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • ... 是什么 ?... 有什么用处?
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET 设计模式—简单工厂(Simple Factory Pattern)