Skynet

          ---------- ---------- 我的新 blog : liukaiyi.cublog.cn ---------- ----------

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            112 Posts :: 1 Stories :: 49 Comments :: 0 Trackbacks


          對(duì)應(yīng)腳本運(yùn)用:
            1.  shell  統(tǒng)籌管理 腳本的運(yùn)行。合理結(jié)合 crontab ,  ps -ef ,kill 等命令。
             2.  perl  處理短小快 。
             3.  python 有比較復(fù)雜結(jié)構(gòu)和邏輯的。
           
          本文主要介紹 perl 的行級(jí)命令使用 ,力求 短 小 快
          #最簡(jiǎn)單的
          $ perl -'print "Hello World\n"'

          #處理文件 行
          $ perl --'print $_' file1


          #編碼轉(zhuǎn)換
          #如果 有需要 在使用下  encode("UTF-8", decode("GBK",$_));在 linux 下默認(rèn) utf-8

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




          #正則使用
             #  if($_=~/.*\/(.*)$/){  print $1 ;}  這是perl 巨方便的地方 $1 xx  
          # next LINE 跳到下一個(gè)循環(huán)

          $ perl --'next LINE unless /pattern/; print $_'


          #去除換行 chomp
          perl -'print split(/\n/,"asg\n");'


          #像 awk 一樣 Begin End
          $ perl -ne 'END { print $t } @w = /(\w+)/g; $t += @w' file.txt 

          #像 awk -F"x" 一樣 切割行
          #-a 打開(kāi)自動(dòng)分離 (split)  模式
          #@F 為 切割后的 數(shù)組

          perl -F'\t' -ane '
           if($F[1]=~/侃侃/ and $F[2]=~/愛(ài)情啊/){
                print "$F[3]\t$F[4]\t$F[5]\n"
            }
          ' all2_data.sort.st

          實(shí)際處理:
           
          perl -F'\|\|' -ane '
           my $actor,$music ;
           if  ( $F[3] ){
            $music=$F[2];
            $actor=$F[3];
           }else{
            $music=$F[0];
            $actor=$F[1]; 
           }
            $music =~ tr/[A-Z]/[a-z]/;
            $music =~ s/\s*(.*)\s*\(.*\)/\1/g;
            $actor =~ tr/[A-Z]/[a-z]/;
            $actor =~ s/\s*(.*)\s*\(.*\)/\1/g;
          print "$actor-$music\n";
          ' ring.utf8.txt  |sort -u  > ring.actor_music.sort.utf8.txt &
          wc 
          -l ring.actor_music.sort.utf8.txt


          #像 sed 一樣替換
              # -i 和 sed 一樣 perl 輸出會(huì)替換調(diào) 源 file.txt
          $ perl --pe 's/\bPHP\b/Perl/g' file.txt


          #外部 傳參
          perl -ne'print "$ARGV[0]\t$ARGV[1]\n" ' file.txt 'par1' 'par2'
              #結(jié)果 ..  par1     par2 ..



          # 查詢(xún)出 重復(fù)列 次數(shù),并 列舉出來(lái)
          cut -d"     "  -2 .collection_mobile.data |perl -ne '
             END{
               while (($key,$value)=each(%a)){print $key,"=",$value,"\n";};
             }BEGIN{ %a =(); } 
             chomp;
             $a{$_}+=1; 
           
          '
          結(jié)果
          Ring=532895
          CRBT=68500
          RingBoxes=880
          Song=96765

           
          #一些實(shí)際使用 :)
          find . -name "*.mp3" | perl -pe 's/.\/\w+-(\w+)-.*/$1/' | sort | uniq
             perl -F'\t' -ane 'if($F[1]=~/$ARGV[0]/ and $F[2]=~/$ARGV[1]/){print "$F[3]\t$F[4]\t$F[5]\n"}' all2_data.sort.st '侃侃' '愛(ài)情啊'

          #與 find 合用 -e $ARGV[0] 批量 把 excel 倒成 文本 格式
          find . -maxdepth 1 -name "*xls" -exec perl -'
          require("/home/xj_liukaiyi/src/perl/excel/excelUtil.pl");
          my $file=$ARGV[0];
          sub myRead{
            
          my $str = "";
            
          for $tmp(@_){
              
          $str="$str$tmp\t";
            }
            
          $str="$str\n";
            
          system "echo \"$str\" >> $file.data ";
          }
          &parse_excel("$file",0,\&myRead);
          print "$file\n";
          ' {} \;




          參考:
          http://www.ibm.com/developerworks/cn/linux/sdk/perl/l-p101/index.html
          http://bbs.chinaunix.net/viewthread.php?tid=499434





          整理 www.aygfsteel.com/Good-Game
          posted on 2009-04-01 14:12 劉凱毅 閱讀(1947) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): perl

          Feedback

          # re: perl 的幸福生活 2009-04-15 11:49 劉凱毅
          所謂的多線(xiàn)程哦
          sed -n '1,1000p' 什么的 就可以了
          :)
          ls mp3/ |sed -n '4000,6000p'|perl -ne '
          require "/home/xj_liukaiyi/src/perl/util/perlUtil.pl";
          my $tmp=$_;
          chomp($tmp);
          my $to="yd_MP3_stereo_48kbps";
          &set_log_input_file("log_mp3_48");
          unless ( (-e "$to/$tmp") && ($tmp=~/.*\..*/) ){
          &system_util("lame -S --resample 44.1 --abr 16 -m s -b 48 \"./mp3/$tmp\" \"./$to/$tmp\" ");
          }
          ' &

            回復(fù)  更多評(píng)論
            

          # re: perl 使用 2009-09-01 23:46 skynet
          交集
          cat ddata | perl -ne 'BEGIN{
          $p1="p1";
          $p2="p2";

          $ssplit="\t";


          }END{
          my @inter = grep {$a{$_}} keys %b; # 求交集
          print $p1,"=",join(",",keys %a),"\n";
          print $p2,"=",join(",",keys %b),"\n";
          print "交集:",scalar @inter," \n";
          }
          chomp;
          @lis=split /$ssplit/;
          if( $lis[1] eq $p1 ){
          $a{$lis[0]}++;
          }
          if( $lis[1] eq $p2 ){
          $b{$lis[0]}++;
          }

          '
            回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 宁强县| 通州区| 合水县| 福建省| 太湖县| 朝阳县| 广昌县| 海晏县| 岳普湖县| 宁海县| 大连市| 甘孜| 蛟河市| 综艺| 奈曼旗| 新竹县| 汕头市| 宁城县| 武邑县| 应用必备| 建阳市| 浪卡子县| 汕头市| 独山县| 镇沅| 清新县| 奉贤区| 电白县| 万盛区| 油尖旺区| 海盐县| 盖州市| 射阳县| 阿城市| 同江市| 达日县| 安康市| 广南县| 屯门区| 濮阳市| 文成县|